Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承与引用我的asp.net mvc中的其他类&;实体框架应用程序_C#_Asp.net Mvc_Entity Framework_Object Oriented Analysis - Fatal编程技术网

C# 继承与引用我的asp.net mvc中的其他类&;实体框架应用程序

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

我正在开发一个asp.net mvc web应用程序。我定义了许多视图模型类,它们引用来自不同来源的独立模型类,如下所示(我在这些类后面加上“Join”一词),因为它们连接在不同DB表中定义的独立模型类:-

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
{
   ...
}