【发布时间】:2014-11-14 13:07:15
【问题描述】:
我创建了一个实体类型,它具有多个引用相同类型项目的集合属性。换句话说,它反映了一个单独的数据库表,其中的行被任意分组,使得一行可能出现在多个组中。
在下面的简化示例中,Person 类具有 Brothers 和 Sisters 集合属性,它们也引用了 Person 实体:
public class Person
{
public Person()
{
Brothers = new Collection<Person>();
Sisters = new Collection<Person>();
}
[Key]
public string Name { get; set; }
public int Age { get; set; }
public virtual ICollection<Person> Brothers { get; set; }
public virtual ICollection<Person> Sisters { get; set; }
}
Entity Framework 似乎认为这是一个有效的模型,但将其解释为创建单个PersonPersons 连接表,无法体现兄弟姐妹关系的分离。
我认为解决方案是使用 fluent API 为两个关系显式映射单独的连接表,但是,尽管进行了大量实验,但我无法让它工作。
有什么建议吗?
谢谢, 蒂姆
【问题讨论】:
-
你试过了吗,HasMany(p => p.Brothers).WithMany(b => b.Persons).Map(m => m.Table("Person_Brothers");没试过这种类型的关系,但是当 ef 不合作时,我们如何映射多对多。
标签: entity-framework many-to-many code-first self-reference