数据库中的“类别”表定义如下:
CategoryID - PK ,identity specification ON (only this column has identity)
Description
Title
我想插入新数据:
Category cat = new Category
{
Description = "xxx",
Title = "yyy",
};
if (cat.EntityState == EntityState.Detached)
{
Articlerctx.AddToCategories(cat);
}
return Articlerctx.SaveChanges();
我收到错误:
无法插入显式值 表'类别'中的标识列 当IDENTITY_INSERT设置为OFF时。
但我没有插入CategoryID!我希望它能获得自动价值!
答案 0 :(得分:5)
您的映射是错误的。 StoreGeneratedPattern
上的CategoryID
应设置为Identity
,但您将其设置为None
。解决了这个问题。
答案 1 :(得分:4)
您的方案在我的情况下运行正常 - 使用EF4。
检查以下事项:
您是否在第一次创建实体模型后更改了数据库模型,如果是这样,您真的更新了实体模型吗?
在那个时间点你的cat.EntityState
真的是detached
吗?在我的情况下,当使用带有ObjectContext
的EF4时,它是Added
。在这种情况下,您不会将新的Cat
对象添加到类别集合中。
答案 2 :(得分:0)
确保“类别”表具有“身份列”。 尝试仅在实体中添加一个对象,然后保存。
尝试一下。
Articlerctx.Category.Add(cat);
Articlerctx.SaveChanges();
如果您的函数可以等待,您也可以使用await SaveChangesAsync();
。