System.Data.UpdateException on SaveChanges() with SQL Server
本文关键字:with SQL Server SaveChanges Data UpdateException on System | 更新日期: 2023-09-27 18:30:23
我正在创建一个基于 Entity Framework 4 的应用程序,该应用程序使用 SQL Server CE 3.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();
}
在我得到这个System.Data.UpdateException
SaveChages()
:
不支持服务器生成的密钥和服务器生成的值 SQL Server Compact。
从这个问题中我知道,当与实体框架一起使用时,SQL Server CE 3.5不支持自动生成的主键。但是,就我而言,我显式设置了要添加的项目的 ID 属性。
还有什么问题吗?
编辑:
这是我删除IDENTITY(1,1)
后的.sqlce
脚本的内容:
-- 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
如果已将其设置为在数据库中自动递增,则从代码中显式设置 ID 不会执行任何操作。您可以使用唯一标识符,也可以修改表中的主键并删除自动增量。然后,您将能够将 Id 设置为代码中的值。查看此线程 SQL Server Compact 不支持服务器生成的密钥和服务器生成的值