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

System.Data.UpdateException on SaveChanges() with SQL Server

如果已将其设置为在数据库中自动递增,则从代码中显式设置 ID 不会执行任何操作。您可以使用唯一标识符,也可以修改表中的主键并删除自动增量。然后,您将能够将 Id 设置为代码中的值。查看此线程 SQL Server Compact 不支持服务器生成的密钥和服务器生成的值