我有一个SQL Server 2008数据库表,它使用uniqueidentifier作为主键。在插入时,使用newid()函数在数据库端生成密钥。
这适用于ADO.NET。但是当我将此表设置为Entity Framework 4模型中的实体时,就会出现问题。我能够很好地查询实体,但是当创建一个新实体并在上下文中调用SaveChanges()时,数据库上生成的uniqueidentifier全为零。
我知道EF v1存在一个问题,即此方案无效,需要在调用SaveChanges之前在客户端上创建GUID。但是,我曾在很多地方读到他们打算在EF 4中解决这个问题。
我的问题 - 在EF4中仍然不支持这种情况(DB端生成uniqueidentifier)吗?我们仍然坚持在客户端上生成GUID吗?
答案 0 :(得分:6)
谢谢你们,终于搞清楚了。在这里写下答案:
答案 1 :(得分:4)
是的,这在EF 4中发生了变化。You can now use a server generated GUID。 @MusiGenesis,服务器生成的GUID有一些优点;它们可以是顺序的,例如