C#4.0 / EF – SQL Server Compact不支持服务器生成的密钥和服务器生成的值

我刚刚将我的一个项目移动到VS2010 / fx4.0中,并使用SQL CE数据库作为后备存储。 自从将其移至此版本的.NET后,我现在收到此错误:

SQL Server Compact不支持服务器生成的密钥和服务器生成的值。

我的表用UserName(字符串)和DoorOpen(datetime)的PK定义的,因为SQLCE 要求 fx3.5中的每个表都有一个PK。 现在我在fx4.0中,我很难过。 我用Google搜索了这个,我找到的每个答案都是:

SQLCE不支持自动生成值(我当然不需要),因此在其上放置一个GUID ID并从代码中填充它。

我试过这种方法,我仍然得到同样的错误!

SQLCE:

CREATE TABLE [ImportDoorAccesses] ( [RawData] nvarchar(100) NOT NULL, [DoorOpen] datetime NOT NULL, [UserName] nvarchar(100) NOT NULL, [CardNumber] bigint NOT NULL, [Door] nvarchar(4000) NOT NULL, [Imported] datetime NOT NULL, [ID] uniqueidentifier NOT NULL -- new column ); ALTER TABLE [ImportDoorAccesses] ADD CONSTRAINT [PK_ImportDoorAccesses] PRIMARY KEY ([ID] ); 

过去的约束是:

 ALTER TABLE [ImportDoorAccesses] ADD CONSTRAINT [PK_ImportDoorAccesses] PRIMARY KEY ([DoorOpen],[UserName]); 

码:

 foreach (dto.DoorAudit newDoorAudit in dataTransferObject) { if (newDoorAudit.DoInsert) { myEntities.AddToImportDoorAccesses(new ImportDoorAccess { CardNumber = newDoorAudit.CardNumber, Door = newDoorAudit.Door, DoorOpen = newDoorAudit.DoorOpen, Imported = newDoorAudit.Imported, RawData = newDoorAudit.RawData, UserName = newDoorAudit.UserName, ID = Guid.NewGuid() // LOOK - HERE IT IS AS SUGGESTED! }); } } myEntities.SaveChanges(); 

那么现在怎么办? 这是EF4中的错误吗? 难道我做错了什么?

TIA


注意:

通过EDMX文件(右键单击,打开,使用XML),我发现我的一个日期列是使用StoreGeneratedPattern =“Identity”设置的

              

然后我切换回漂亮的模型视图并单击我的数据库中的每一列,以确保没有设置。 一个PITA肯定。 看起来需要创建一个完美的小工具/加载项……

要检查的重要事项是EDMX文件,并确保此属性/列中没有StoreGeneratedPattern标识。