从实体框架项目开始。
导入我将要使用的 Db,并立即注意到许多表字段被制成 EntityKey 类型,而源字段甚至不是 Keys。似乎不是关于哪些字段被制作为 EntityKeys 而哪些不是的模式。
这是正常的吗?向导中没有此选项。我不想为添加它的所有字段检查并删除此属性。
谢谢你的建议!
从实体框架项目开始。
导入我将要使用的 Db,并立即注意到许多表字段被制成 EntityKey 类型,而源字段甚至不是 Keys。似乎不是关于哪些字段被制作为 EntityKeys 而哪些不是的模式。
这是正常的吗?向导中没有此选项。我不想为添加它的所有字段检查并删除此属性。
谢谢你的建议!
模型上的每个实体都需要一个唯一键,因此 EF 可以根据它们的唯一标识符跟踪和检索/保留这些实体。
如果您的数据库中的表没有主键,那么您的数据库不是关系型的,因此不应由主要为 RDBMS 设计的 EF 之类的 ORM 使用。
如果您有这样的实体:
public class Orders
{
public string Name { get; set; }
public double Price { get; set; }
}
您将如何检索单个订单?您将如何保存单个订单?
诸如此类的关键 LINQ 方法SingleOrDefault()
将毫无用处,因为不能保证这不会引发异常:
var singleOrder = ctx.Orders.SingleOrDefault(x => x.Name == "Foo");
虽然如果您有一个名为“OrderId”的 EntityKey 和 PK,则保证不会引发异常:
var singleOrder = ctx.Orders.SingleOrDefault(x => x.OrderId == 1);
http://msdn.microsoft.com/en-us/library/dd283139.aspx
我想一旦你阅读了第一段,你就会明白实体键在实体框架中的作用。