2011-07-18 101 views
1

我在数据库中有两个表。一个是成员,一个是客户。客户表包含谁创建该行的两列以及谁修改了该行。从每列设置外键以映射回成员表。所有这一切都是有道理的,直到 一个对数据库运行实体框架,我得到为我生成的以下代码。为什么实体框架为外键生成支持关系?

public Member() 
{ 
    public virtual ICollection<Client> Clients { get; set; } 
    public virtual ICollection<Client> Clients1 { get; set; } 
} 

public Client() 
{ 
    public virtual Member MemberForCreated { get; set; } 
    public virtual Member MemberForModified { get; set; } 
} 

我的问题是,为什么会实体框架认为,使在成员表背收集到客户表中的每个外键关系?我真的需要这种关系,还是我可以删除的东西?任何信息都会有用。

附注:这些集合和关系可以在实体的导航属性集合下的.edmx文件中找到。

回答

2

默认情况下EF关系是双向的。如果你不需要它,你可以删除任一方向。

您也可以重命名它们。你可能会,例如,想叫他们Member.ClientsCreatedMember.ClientsModified

Julie Lerman has a video examining unidirectional relationships.

+0

你会从数据库中删除或从.edmx文件的实体之间的关系?移除它是否会导致进一步的问题? – Chris

+0

查看我链接的Julie Lerman视频。您从EDMX中删除关系。你可以在设计师那里做到这一点。这导致了EF 1中的“问题”,但EF 4中却没有。我们保留(在将它们重命名为更好的东西之后),因为它们偶尔在查询中很有用。 –

相关问题