我正在开发一个利用实体框架的新项目。我爱上了关系反向,两种类型的导航属性都会让我的生活变得更加轻松。 问题是:我们的项目经理认为使用此设施可能会导致错误,因此建议我们不要使用它。实体框架(4.1)中具有一对多双向关系有哪些优点和缺点?
比方说,我们有类别和产品:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
他说,一个也可以,错误,productZ.Category设置为categoryX,然后做一个categoryY.Products.Add(productZ)为例。那么当我们保存上下文时,什么样的关系会持续存在?最后一个?好的,如果第一个是正确的类别呢?而这种错误很难调试(我同意这一点)。
我不认为这种情况会发生,但我真的尊重他的意见,他比我更有经验,但我真的想说服他让我们具有双向导航属性,唯一的理由是:if每个人都在这样做,那么它不能这么糟糕。 :)
你们可以帮我一些更坚实的论点?
当我们添加一个新产品时,我们主要将这个类别分配给产品,然后插入它。有时我们会使用产品及其类别,但也需要从一个类别(甚至是所有类别)访问所有产品。看到我的观点? –
单个类别或所有类别的产品都可以通过对产品进行单独查询来访问。 –