【问题标题】:How to insert value for a identity column in Entity Framework?如何在实体框架中插入标识列的值?
【发布时间】:2013-03-24 10:52:38
【问题描述】:

我在 sql 表中创建了两列,一列是标识列,另一列是 varchar 列。我需要从值 1000 开始生成标识列。我尝试了以下代码 sn-p,但给出错误“更新条目时发生错误。有关详细信息,请参阅内部异常..”

   Place objPlace = new Place();
   objPlace.PNAME = "place 3";
   //objPlace.PID = 1003;   //purposefully commented for auto increment

   objContext.Places.AddObject(objPlace);
   objContext.SaveChanges();

我想这是一个非常基本的问题,因为我是 EF 新手,所以请帮我解决一下。

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    您只是想在 EF 中执行此操作来学习语法吗?我问的原因是因为您可以在 SSMS (http://msdn.microsoft.com/en-gb/library/aa933196%28v=sql.80%29.aspx) 中的列上设置种子

    【讨论】:

      【解决方案2】:

      您不能为标识列赋值。它毫无意义。

      如果你想改变你的身份列的起始值,为什么不通过一个简单的脚本来做呢?

      context.Database
             .ExecuteSqlCommand("ALTER TABLE Place ALTER COLUMN Id IDENTITY (1000,1)");
      

      这会将 Place.Id 插入为 1000,用于表中的第一行,然后插入 1001,1002...,以此类推用于后续行。

      【讨论】:

      • 我在 datacontext 中找不到任何名为 Database 的东西。
      • 告诉我如何设置标识列并在实体框架中使用它
      • 如果您使用的是 Entity-Framework 4.0,请使用 context.ExecuteStoreQuery
      • 你可以像Property(s => s.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);这样使用流利的api设置一个列标识。
      • 这很有帮助。是否可以通过 EF 模型设计器进行设置?
      【解决方案3】:

      让sql server生成身份。设置身份种子和身份增量的值。

      当列为 identity 时,从实体框架插入记录会引发以下错误。 当 IDENTITY_INSERT 设置为 OFF 时,无法为表“MY_ENTITY”中的标识列插入显式值。 为避免错误设置实体属性 StoreGeneratedPattern="Identity"

        <EntityType Name="MY_ENTITY">
                    <Key>
                      <PropertyRef Name="UserID" />
                    </Key>
                    <Property Name="RecordID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
      

      【讨论】:

        【解决方案4】:

        上述帖子中提到的 ExecuteSqlCommand() 命令将无法像link 中提到的那样工作

        提到了另一个解决方案here

        【讨论】:

          猜你喜欢
          • 2023-03-10
          • 2011-09-12
          • 1970-01-01
          • 2017-03-15
          • 2020-11-22
          • 2017-03-05
          • 2017-01-06
          • 2012-09-25
          • 1970-01-01
          相关资源
          最近更新 更多