EntityFramework 使用值“00000000-0000-0000-0000-000000000000”填充唯一标识符

gre*_*eat 5 entity-framework uniqueidentifier

在我的 WCF 服务中,我使用的是 Entity Framework .NET 4.0,在我的数据库中,我有这个表:

CREATE TABLE [dbo].[Tracking](
    [TrackingID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,   
    ...
 CONSTRAINT [PK_Tracking] PRIMARY KEY CLUSTERED 
(
    [TrackingID] ASC
)
) ON [DATA]
ALTER TABLE [dbo].[Tracking] ADD  CONSTRAINT [DF_Tracking_TrackingID]  DEFAULT (newid()) FOR [TrackingID]
GO
Run Code Online (Sandbox Code Playgroud)

当我插入记录时,实体框架已将 TrackingID 预填充为“00000000-0000-0000-0000-000000000000”。我已将字段属性设置为 Computed 和 Identity bu 没有这样的运气任何想法:这是我的代码片段:

using (var context = new DB.PTLEntities())
{
     var tracking = new DB.Tracking();       
     context.Trackings.AddObject(tracking);
     context.SaveChanges();
     trackingID = tracking.TrackingID;
}
Run Code Online (Sandbox Code Playgroud)

Not*_*ple 5

看起来 EF 不认为此列是标识列,因此将其放入默认值(Guid)。在此处查看有关使 guid 成为身份列的一些详细信息(它实际上通过您的确切示例)http://leedumond.com/blog/using-a-guid-as-an-entitykey-in-entity-framework -4/

  • @oxfn 尝试回归机器:http://web.archive.org/web/20120215161924/http://leedumond.com/blog/using-a-guid-as-an-entitykey-in-entity-framework-4很遗憾他的博客离线,我可能会在某个阶段将其中的一些加入我的答案中 (2认同)