0

我正在创建一个使用 SQL Server CE 3.5 作为其数据存储的基于 Entity Framework 4 的应用程序。

我有一个使用从实体数据模型创建的脚本生成的空.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

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

这个问题我知道,当与实体框架一起使用时,SQL Server CE 3.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
4

1 回答 1

1

如果您已将其设置为在数据库中自动递增,则从代码中显式设置 ID 不会做任何事情。您可以使用 uniqueidentifier 或修改表中的主键并删除自动增量。然后您就可以将 Id 设置为代码中的值。查看此线程SQL Server Compact 不支持服务器生成的键和服务器生成的值

于 2012-04-05T18:28:37.277 回答