C# 为什么我在EF中得到双栏?
为什么我会得到一个双重的列,如图所示: 如何将这些列合并到一列而不是两列C# 为什么我在EF中得到双栏?,c#,entity-framework,C#,Entity Framework,为什么我会得到一个双重的列,如图所示: 如何将这些列合并到一列而不是两列 public class User { [Key] public long id { get; set; } } public class Woman : User { public Woman() { s = new SharedManWoman(); Clone = new Clone.CWoman(); } public Clone.
public class User
{
[Key]
public long id { get; set; }
}
public class Woman : User
{
public Woman()
{
s = new SharedManWoman();
Clone = new Clone.CWoman();
}
public Clone.CWoman Clone { get; set; }
public SharedManWoman s { get; set; }
}
public class Man : User
{
public Man()
{
s = new SharedManWoman();
Clone = new Clone.CMan();
}
public Clone.CMan Clone { get; set; }
public SharedManWoman s { get; set; }
}
public class SharedManWoman
{
[Key]
public long tableId { get; set; }
}
public class CUser
{
[Key]
public long id { get; set; }
}
public class CWoman : CUser {}
public class CMan : CUser {}
这两个属性都是在单独的派生类中定义的,由于它们是导航属性,因此会为每个属性生成一个外键:
public Clone.CWoman Clone { get; set; }
public Clone.CMan Clone { get; set; }
您可以将它们向上移动到基类,并消除CWoman/CMan,而不是使其成为CUser类型:
public class User
{
[Key]
public long id { get; set; }
public Clone.CUser Clone { get; set; }
}
这将消除其中一个重复的FK,但不确定此解决方案是否符合您试图实现的目标。克隆是如何定义的?我添加了请查看again@RufusLClone是一个属性名,由CWoman和cman在上面的代码中定义,对象CMan和CWoman除了从CUser继承的id之外没有其他属性。在类Man和Woman中,有一个名为Clone的属性,其类型分别为Clone.CMan和Clone.CWoman。该类型是在哪里定义的?