【问题标题】:Why does entity framework generate backing relationships for foreign keys?为什么实体框架会为外键生成支持关系?
【发布时间】:2011-07-18 19:17:41
【问题描述】:

我在一个数据库中有两个表。一个是给会员的,一个是给客户的。客户表有两列,分别代表谁创建了行和谁修改了行。从每一列设置外键以映射回成员表。所有这些都是有道理的,直到 一个针对数据库运行实体框架,我得到了为我生成的以下代码。

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; }
}

我的问题是,为什么 Entity Framework 会考虑在成员表中为与客户端表的每个外键关系创建一个支持集合?我真的需要这种关系,还是我可以消除这种关系?任何信息都会很有用。

附带说明:这些集合和关系位于实体导航属性集合下的 .edmx 文件中。

【问题讨论】:

    标签: c# entity-framework entity-framework-4.1


    【解决方案1】:

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

    您也可以重命名它们。例如,您可能想称呼他们为Member.ClientsCreatedMember.ClientsModified

    Julie Lerman has a video examining unidirectional relationships.

    【讨论】:

    • 您会从数据库中还是从 .edmx 文件的实体中删除关系?删除它会导致进一步的问题吗?
    • 查看我链接的 Julie Lerman 视频。您从 EDMX 中删除关系。您可以在设计器中执行此操作。这在 EF 1 中导致了“问题”,但在 EF 4 中没有。但是,我们保留了(在将它们重命名为更好的名称之后),因为它们有时在查询中很有用。
    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多