C# 继承与引用我的asp.net mvc中的其他类&;实体框架应用程序
我正在开发一个asp.net mvc web应用程序。我定义了许多视图模型类,它们引用来自不同来源的独立模型类,如下所示(我在这些类后面加上“Join”一词),因为它们连接在不同DB表中定义的独立模型类:-C# 继承与引用我的asp.net mvc中的其他类&;实体框架应用程序,c#,asp.net-mvc,entity-framework,object-oriented-analysis,C#,Asp.net Mvc,Entity Framework,Object Oriented Analysis,我正在开发一个asp.net mvc web应用程序。我定义了许多视图模型类,它们引用来自不同来源的独立模型类,如下所示(我在这些类后面加上“Join”一词),因为它们连接在不同DB表中定义的独立模型类:- public class ServerJoin : IValidatableObject { public Server Server { get; set; } public Resource Resource { get; set; } public Techno
public class ServerJoin : IValidatableObject
{
public Server Server { get; set; }
public Resource Resource { get; set; }
public Technology Technology { get; set; }
public SDOrganization Site { get; set; }
public SDOrganization Customer { get; set; }
public NetworkInfo NetworkInfo { get; set; }
public ICollection<NetworkInfo> NetworkInfo2 { get; set; }
[Display(Name="Unique")]
public bool IsMACUnique { get; set; }
[Display(Name = "Unique")]
public bool IsIPUnique { get; set; }
public Nullable<double> SPEED { get; set; }
public Nullable<Int64> PROCESSORCOUNT { get; set; }
[Display(Name = "IP Unique")]
public bool IsTIPUnique { get; set; }
[Display(Name = "MAC Unique")]
public bool IsTMACUnique { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Server != null)
{
if (Server.RackUnitID != null && Server.RackID == null)
{
yield return new ValidationResult("Please select a Rack, or remove the current Rack Unit", new[] { "Server.RackUnitID" });
}
}
}
}
现在我不确定如何在视图模型中引用这个类。我正在寻找一种将此类定义为父类并强制其他类(serverjoin&vmjoin)扩展此GeneralClass?的方法?。另一个选项(模仿实体框架管理类的方式)只是在Serverjoin&VMjoin?中添加GeneralClass的引用??有人能就这件事发表意见吗
谢谢IValidatableObject是一个界面,因此您可以使用:
public class ServerJoin : GeneralClass, IValidatableObject
{
...
}
从ViewModel的角度来看,我不确定这是否有意义。我通常在实体模型中进行继承,然后在ViewModels中进行展平处理。IValidatableObject是一个界面,因此您可以使用:
public class ServerJoin : GeneralClass, IValidatableObject
{
...
}
从ViewModel的角度来看,我不确定这是否有意义。我通常在实体模型中进行继承,然后在ViewModels中进行展平。EF将处理继承或合成。您需要确定ServerJoin“是”GeneralClass(继承)还是ServerJoin“是”GeneralClass(组合)@SteveGreene我需要它是“Isa”,但不确定在这种情况下如何扩展我的serverjoin,因为它已经扩展了IValidatableObject?EF将处理继承或组合。您需要确定ServerJoin“是”GeneralClass(继承)还是ServerJoin“是”GeneralClass(组合)@SteveGreene我需要它“是一个”,但不确定在这种情况下我将如何扩展我的serverjoin,因为它已经扩展了IValidatableObject?但是如何在实体模型内部进行继承?现在,我遵循DB-first方法,使用EF映射我的DB表,在自动生成的模型类中,我从未获得任何类型的继承。。我的意思是,当遵循DB优先的方法时,EF似乎总是遵循组合而不是继承……当遵循代码优先的方法时,不确定事情是如何工作的……您需要删除关系并添加继承。请看这里:好的,谢谢你的链接,所以我的问题是,如果我修改EF如何映射我的表,使其具有类似于继承的模型类,我会得到任何好处吗?或者使用组合来映射模型类也可以?你会有不同的看法,但我一直坚持使用组合。继承增加了复杂性,而组合似乎是关系数据更好的抽象。所以,保持组合的原样是好的吗?你认为呢?但是你如何在实体模型中进行继承呢?现在,我遵循DB-first方法,使用EF映射我的DB表,在自动生成的模型类中,我从未获得任何类型的继承。。我的意思是,当遵循DB优先的方法时,EF似乎总是遵循组合而不是继承……当遵循代码优先的方法时,不确定事情是如何工作的……您需要删除关系并添加继承。请看这里:好的,谢谢你的链接,所以我的问题是,如果我修改EF如何映射我的表,使其具有类似于继承的模型类,我会得到任何好处吗?或者使用组合来映射模型类也可以?你会有不同的看法,但我一直坚持使用组合。继承增加了复杂性,而组合似乎是关系数据更好的抽象。所以,保持组合的原样是好的吗?你怎么认为?
public class ServerJoin : GeneralClass, IValidatableObject
{
...
}