实体框架4,定义关系

时间:2010-01-12 03:18:17

标签: .net entity-framework

当使用POCO类以1对多关系在实体框架4中定义关系时,为什么必须在子级别定义关系。 例如,我们有一个订单,有很多产品。 产品映射文件中的关系如下所示: -

    Relationship(e => e.Order)
            .FromProperty(m => m.Product)
            .HasConstraint((e, m) => e.Id == m.Id);

在n-hibernate中,它在父级别的映射文件中定义(在本例中为Order)。拥有父母定义的关系可以提供更大的灵活性和重用。

有没有办法在父级别而不是在EF4中执行此操作。

1 个答案:

答案 0 :(得分:1)

在EF4 CTP2中,它们具有反向属性。在ADO.NET team blog post中提到了它们。

 public ParentConfiguration()
        {
            Property(p => p.Id).IsIdentity();
            Property(p => p.FirstName).IsRequired();
            Property(p => p.LastName).IsRequired();

            //Register an inverse
            Relationship(p => p.Children).FromProperty(c => c.Parents);
        }

这意味着parent.Children = children将与child.Parents.Add(parent)一样工作。

我还没有看到像NHibernate一样的方法,你可以将属性\元数据直接应用于父类。根据我使用POCO“普通旧CLR对象”的经验,它们与ORM框架是分开的。关系由EF中的ObjectContext定义,并从那里进行管理。