同时使用多对多和一对多同一实体

我在EF Code-First中有一个多对多的关联(正如本问题中所解释的那样),我想对同一个实体使用一对多关系。 问题是EF没有产生正确的数据库方案。 码:

public class A { public int Id { get; set; } public string Name { get; set; } public virtual ICollection ObjectsOfB { get; set; } } public class B { public int Id { get; set; } public virtual A ObjectA { get; set; } public virtual ICollection OtherObjectsOfA { get; set; } } 

当我删除B类的ObjectA属性时,会正确生成多对多关联。 当生成不正确时,实体B获得2个外键到A,实体A获得1个外键到B(就像多对一关系一样)。

如果表B具有表A的外键,则类B具有到A的导航属性,并且A具有到ICollection导航属性。
如果表B与表A具有多对多关系,则类A必须具有ICollection并且类B必须具有ICollection

试试这个,也许这会澄清你对EF的要求。