繁体   English   中英

如何在实体框架中为标识列插入值?

[英]How to insert value for a identity column in Entity Framework?

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

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

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

我想这是一个非常基本的问题,因为我是EF新手,所以请帮助我进行梳理。

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

您不能将值分配给“标识”列。 它毫无意义。

如果要更改标识列的起始值,为什么不通过简单的脚本来更改呢?

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

这将在表的第一行中插入Place.Id为1000,然后在表的第一行中插入1001,1002 ...,依此类推。

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

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

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

一篇文章中提到的ExecuteSqlCommand()命令将无法正常工作,如链接中所述

这里提到了另一个解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM