EF 4中“包含模型中的外键列”选项的优缺点是什么?

时间:2010-06-11 14:25:57

标签: entity-framework visual-studio-2010

随着EF4的推出,新功能“在模型中包含外键列”。添加此功能背后的动机是什么,是否存在任何特定的问题,要么将其关闭,要么在从现有数据库生成模型时将其打开?

1 个答案:

答案 0 :(得分:2)

在不知道它的真正动机的情况下,我认为当您通过Web服务或直接向表示层公开您的实体时,会有这些额外列的价值,而我个人并不亲自做或推荐。 / p>

考虑以下示例。

如果您没有外键属性,那么您的客户端代码将如下所示。您很可能不希望从数据存储区加载类别的实例,因此您最终创建了一个类别的新实例,其中只设置了Id来表示FK关系。

        var product = new Product
        {
           Category = new Category {Id = 1},
           Name = "Product 1"
        };

在以前版本的Entity Framework中,它更加混乱,你最终得到了这样的代码。

        var product = new Product();
        product.Name = "Product 1";
        product.CategoryReference = new EntityReference<Category>();
        product.CategoryReference.SetEntityKey<Category>(1); 

虽然它可能不纯,但我个人认为这对于客户来说更容易阅读和更少工作。

        var product = new Product
        {
            CategoryId = 1,
            Name = "Product 1"
        };

<强>赞成

为与您的实体合作的客户提供更轻松的编码体验。

<强>缺点

从DDD角度来看,在您的实体上拥有两个属性并非完全纯粹。