在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

当我插入记录时,Entity framewrok已将TrackingID预先填充为“00000000-0000-0000-0000-000000000000”。我将字段属性设置为“计算”,并且“身份”没有任何运气:这是我的代码段:
using (var context = new DB.PTLEntities())
{
     var tracking = new DB.Tracking();
     context.Trackings.AddObject(tracking);
     context.SaveChanges();
     trackingID = tracking.TrackingID;
}

最佳答案

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

关于entity-framework - EntityFramework用值“00000000-0000-0000-0000-000000000000”填充uniqueidentifier,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11147049/

10-13 06:47