实体框架 - 使用GUID作为EntityKey的SaveChanges

时间:2010-05-13 13:37:41

标签: entity-framework guid

我有一个SQL Server 2008数据库表,它使用uniqueidentifier作为主键。在插入时,使用newid()函数在数据库端生成密钥。

这适用于ADO.NET。但是当我将此表设置为Entity Framework 4模型中的实体时,就会出现问题。我能够很好地查询实体,但是当创建一个新实体并在上下文中调用SaveChanges()时,数据库上生成的uniqueidentifier全为零。

我知道EF v1存在一个问题,即此方案无效,需要在调用SaveChanges之前在客户端上创建GUID。但是,我曾在很多地方读到他们打算在EF 4中解决这个问题。

我的问题 - 在EF4中仍然不支持这种情况(DB端生成uniqueidentifier)吗?我们仍然坚持在客户端上生成GUID吗?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:4)

是的,这在EF 4中发生了变化。You can now use a server generated GUID。 @MusiGenesis,服务器生成的GUID有一些优点;它们可以是顺序的,例如