我有一个SQL Server 2008数据库表,它使用uniqueidentifier作为主键。在插入时,使用newid()函数在数据库端生成密钥。实体框架 - GUID为EntityKey的SaveChanges
这适用于ADO.NET。但是当我在Entity Framework 4模型中将此表设置为实体时,存在一个问题。我能够很好地查询实体,但是当创建一个新实体并在上下文中调用SaveChanges()时,数据库上生成的uniqueidentifier全为零。
据我所知,在这种情况下无法正常工作的EF v1存在问题,因此需要在调用SaveChanges之前在客户端上创建GUID。不过,我曾在很多地方看过他们打算在EF 4中修复这个问题。
我的问题 - 这种情况(DB端代uniqueidentifier)在EF4中是不支持的吗?我们仍然坚持在客户端上生成GUID吗?
只是出于好奇,为什么你觉得你是“卡”在客户端上生成的GUID?这是uniqueidentifier,IMO的主要优势*。如果您想在服务器上生成ID,为什么不使用自动递增键? – MusiGenesis 2010-05-13 13:48:13
顺便说一下,很棒的昵称。 :) – MusiGenesis 2010-05-13 13:48:41
@MusiGenesis,1. MissingLinq确实需要一个自动生成的键,只是不是一个int(也许因为他们有更多的限制范围)。 2.数据库生成密钥的目的是消除冲突,使用GUID的机会可能是1/2^128,但为什么不让数据库这样做,让客户端代码只是担心创建实体而不是数据库密钥。 – 2011-04-06 15:14:47