我正在创建一个基于实体框架4的应用程序,它使用SQLServerCE3.5作为其数据存储。
我使用实体数据模型创建的.sdf脚本生成了一个空的.sqlce文件。
当我运行这段代码时:
Item item = new Item();
item.ID = 1;
item.Title = "example";
item.Value = 37;
using (ModelContainer context = new ModelContainer())
{
context.ItemsSet.AddObject(item);
context.SaveChanges();
}在SaveChages()上我得到了这个System.Data.UpdateException
SQLServerCompact不支持
服务器生成的键和服务器生成的值。
从this question中我知道,当与实体框架一起使用时,SQLServerCE3.5不支持自动生成的主键。然而,在我的例子中,我显式地设置了我要添加的项的ID属性。
还有什么不对劲吗?
编辑:
这是删除.sqlce后的IDENTITY(1,1)脚本的内容
-- Creating table 'ItemsSet'
CREATE TABLE [ItemsSet] (
[ID] int NOT NULL,
[Title] nvarchar(4000) NOT NULL,
[Value] int NULL
);
GO
-- Creating primary key on [ID] in table 'ItemsSet'
ALTER TABLE [ItemsSet]
ADD CONSTRAINT [PK_ItemsSet]
PRIMARY KEY ([ID] );
GO发布于 2012-04-05 18:28:37
如果将ID设置为数据库中的自动增量,则从代码中显式设置ID将不会执行任何操作。您可以使用use标识符,也可以修改表中的主键并删除自动增量。然后,您将能够将Id设置为代码中的值。查看这个线程Server-generated keys and server-generated values are not supported by SQL Server Compact
https://stackoverflow.com/questions/10033485
复制相似问题