多重继承使数据库上的列重复并且发生冲突

时间:2019-04-23 20:50:50

标签: c# entity-framework inheritance orm

我有两个从同一个基类继承的类。这是代码的一部分:

public abstract class baseclass
{
    public virtual int? MyObjectID { get; set; }
    public virtual Object MyObject { get; set; }
}
public class Derived1 :baseclass
{

}
public class Derived2 : baseclass
{

}

在使3列表示相同属性的数据库中: MyObjectID MyObject_ID MyObject_ID1

所以我无法将值发送到数据库。它只能是一列:MyObjectID 如何防止重复的列?

1 个答案:

答案 0 :(得分:0)

我用Fluent Api解决了这个问题

modelBuilder.Entity<AnotherObject>().Ignore(o => o.Derived1);
modelBuilder.Entity<AnotherObject>().Ignore(o => o.Derived2);
modelBuilder.Entity<Object>().Ignore(o => o.AnotherObject);

现在我有另一个问题。我需要设置Derived类的baseclass属性之一。

public abstract class BaseClass
{
    public virtual string MutualString { get; set; }
}
public class Derived1 :BaseClass
{
    public virtual Object1 Kisi { get; set; }
    public override string MutualString
    {
        get { return Kisi.TamAd; } //*TamAd is string.
        set { value = Kisi.TamAd; }
    }
}
public class Derived2 : BaseClass
{
    public virtual Object2 Firma{ get; set; }
    public override string MutualString
    {
        get { return Firma.TamAd; }
        set { value = Firma.TamAd; }
    }
}

尝试列出时出现错误。 “ System.NullReferenceException:'对象引用未设置为对象的实例。'”但它不是null