1

从实体框架项目开始。

导入我将要使用的 Db,并立即注意到许多表字段被制成 EntityKey 类型,而源字段甚至不是 Keys。似乎不是关于哪些字段被制作为 EntityKeys 而哪些不是的模式。

这是正常的吗?向导中没有此选项。我不想为添加它的所有字段检查并删除此属性。

谢谢你的建议!

4

2 回答 2

1

模型上的每个实体都需要一个唯一键,因此 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);
于 2011-01-22T05:55:16.503 回答
0

http://msdn.microsoft.com/en-us/library/dd283139.aspx

我想一旦你阅读了第一段,你就会明白实体键在实体框架中的作用。

于 2011-01-22T02:42:34.300 回答