0

我在 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 的新手,所以请帮我解决。

4

4 回答 4

1

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

于 2013-03-24T11:08:13.183 回答
0

上述帖子中提到的 ExecuteSqlCommand() 命令将无法正常工作,如链接所述

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

于 2014-10-18T17:28:13.737 回答
0

让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" />
于 2013-07-08T08:14:48.563 回答
0

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

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

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

这将为Place.Id表中的第一行插入 1000,然后为后续行插入 1001,1002... 等等。

于 2013-03-24T10:56:19.990 回答