【问题标题】:Entity framework IDENTITY_INSERT实体框架 IDENTITY_INSERT
【发布时间】:2011-01-12 13:04:05
【问题描述】:

数据库中的'Category'表定义如下:

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!我希望它获得自动价值!

【问题讨论】:

  • 谢谢,问题出在模型更新上!把它写成答案,我会接受的:)
  • 好的,完成 - 让我的 cmets 成为答案 - 谢谢!

标签: c# entity-framework


【解决方案1】:

您的映射错误。 CategoryID 上的 StoreGeneratedPattern 应该设置为 Identity,但您已将其设置为 None。修复它。

【讨论】:

  • 你能澄清你的答案吗? "StoreGeneratedPattern"
  • @asker:单击设计器中的属性 (CategoryId)。查看属性窗口。更改 StoreGeneratedPattern 值。或者谷歌这个词。
  • @CraigStuntz:你怎么知道这个???你怎么知道这甚至是一个问题?如果这是一个常见问题,为什么在自动生成模型时会出现?我花了一天时间尝试附加我的实体,直到我遇到这个小答案......谢谢。
  • @SpaceRach:“专家是在一个非常狭窄的领域里犯了所有可能犯的错误的人。” ——尼尔斯·玻尔
【解决方案2】:

在我的情况下,您的方案运行良好 - 使用 EF4。

检查以下事项:

  • 自从您第一次创建实体模型以来,您是否更改了数据库模型,如果是,您是否真的更新了您的实体模型?

  • 那个时候你的cat.EntityState真的是detached吗?就我而言,当使用带有ObjectContext 的EF4 时,它是Added。在这种情况下,您不会将新的 Cat 对象添加到类别集合中。

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2013-04-19
    • 2011-06-27
    • 2011-10-27
    • 2011-06-27
    • 2017-07-07
    • 2020-06-06
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多