我在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的新手,所以请帮我解决。
答案 0 :(得分:1)
您是否只想在 EF 中执行此操作以了解语法?我问的原因是因为您可以在 SSMS (http://msdn.microsoft.com/en-gb/library/aa933196%28v=sql.80%29.aspx)
中的列上设置种子答案 1 :(得分:0)
您无法为Identity列指定值。它毫无意义。
如果要更改标识列的起始值,为什么不通过简单的脚本来完成?
context.Database
.ExecuteSqlCommand("ALTER TABLE Place ALTER COLUMN Id IDENTITY (1000,1)");
这会将Place.Id
作为1000插入表格中的第一行,然后插入1001,1002 ......依此类推后续行。
答案 2 :(得分:0)
让sql server生成身份。设置标识种子和标识增量的值。
当列是标识时,从实体框架插入记录会引发跟随错误。 当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" />
答案 3 :(得分:0)