随着EF4的推出,新功能“在模型中包含外键列”。添加此功能背后的动机是什么,是否存在任何特定的问题,要么将其关闭,要么在从现有数据库生成模型时将其打开?
答案 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角度来看,在您的实体上拥有两个属性并非完全纯粹。