实体框架代码首先为嵌套类中具有一对零关系的相同属性创建重复的外键。实体框架代码首先为嵌套类中的同一个实体创建重复的外键
实施例:
abstract class A {}
public class MyClass {}
public class B:A {
...
public int MyClassId {get; set;}
public virtual MyClass MyClass { get; set;}
}
public class C:A {
...
public int MyClassId {get; set;}
public virtual MyClass MyClass { get; set;}
}
B类和A点到同一个表中DB甲。
我有一个配置对他们俩
modelBuilder.Entity<B>().HasRequired(x => x.MyClass).WithMany()
.HasForeignKey(x => x.MyClassId).WillCascadeOnDelete(false);
modelBuilder.Entity<C>().HasRequired(x => x.MyClass).WithMany()
.HasForeignKey(x => x.MyClassId).WillCascadeOnDelete(false);
和问题是,EF在表中创建一个两列MyClassId ANS MyClassId1而不是一个。
我需要更改为只有一列MyClassId?
我无法将MyClass属性移动到类A中,因为有许多从A嵌套并且不应具有此属性的类。 另外我无法在A和B之间创建代理类C。
感谢
你为什么不只是移动'公众的一部分int MyClassId'和'公共虚拟MyClass MyClass'到'A'类? – user2216
A中有大约10个嵌套类,它们不应该具有MyClass属性。 – AsTi
在这种情况下,您将拥有一个“稀疏矩阵”类型的表格,即大量空单元格。 – tschmit007