Microsoft Entity Framework链接表问题

时间:2015-03-25 00:05:34

标签: c# entity-framework

我希望有人能在这里给我一些建议。我想知道我的方法是否在轨道上或离开基地。我正在使用Entity Framework,数据库第一种方法。我有一个链接表,将人们彼此联系起来。例如,与人2相关联的人1作为朋友。 (association_type包含与查找表关联的键值)

enter image description here

我注意到Entity Framework创建了两个单独的导航属性。

[EdmRelationshipNavigationPropertyAttribute("IntelDBModel", "FK_a_Person_Person_t_Person", "a_Person_Person")]
    public EntityCollection<a_Person_Person> a_Person_Person
[EdmRelationshipNavigationPropertyAttribute("IntelDBModel", "FK_a_Person_Person_t_Person1", "a_Person_Person")]
    public EntityCollection<a_Person_Person> a_Person_Person1

在应用程序的其他部分,我已成功使用Entity Framework将数据写入数据库。例如,我有一个人打电话。

enter image description here

在电话人员场景中,我创建一个t_Person(p)对象,然后创建一个t_Telephone(t)对象并使用p.t_Telephone.Add(t);

这似乎工作正常。

我在如何管理此人对人员链接表插入方面有点迷失。

保存到数据库时,我使用foreach迭代People对象。

foreach (t_Person p in People)
{ctx.t_Person.AddObject(p);
...
}

我知道哪个人与此People对象集合中的人员相关联。但是,我不知道如何利用t_Person导航属性(a_Person_Person)将person1和person2值保存到链接表(a_Person_Person)。

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为给定的情况通常会给你很难使用EF,因为你用相同的主键链接两个外键两个表,因为关系或延迟加载很难处理你可能得到双重记录或错误的记录,我会添加另一个属性到t_person表,如datecreated,这将使EF对待t_person表不是一个关联,但作为实际实体,让您更多地控制实体和插入和删除。