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

问题描述 投票:0回答:1

我有两个继承自同一基类的类。以下是代码的一部分:

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如何防止重复的列?

c# entity-framework inheritance orm
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.