C# 如何在实体框架中插入标识列的值?

C# 如何在实体框架中插入标识列的值?,c#,entity-framework,C#,Entity Framework,我在sql表中创建了两列,一列是标识列,另一列是varchar列。我需要从值1000开始生成标识列。我尝试了下面的代码段,但出现错误“更新条目时出错。有关详细信息,请参阅内部异常…” 我想这是一个非常基本的问题,因为我是EF新手,所以请帮我整理一下。您不能为标识列赋值。这毫无意义 如果您想更改标识列的起始值,为什么不通过一个简单的脚本来完成呢 context.Database .ExecuteSqlCommand("ALTER TABLE Place ALTER COLUMN Id

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


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

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

如果您想更改标识列的起始值,为什么不通过一个简单的脚本来完成呢

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

这将为表中的第一行插入
Place.Id
为1000,然后插入10011002。。。接下来的行也是如此。

您只是想在EF中学习语法吗?我之所以这样问,是因为您可以在SSMS()

中的列上设置种子,让sql server生成标识。设置标识种子和标识增量的值

当列为identity时,从实体框架插入记录将引发以下错误。 当identity\U insert设置为OFF时,无法在表“我的实体”中为identity列插入显式值。 为避免错误,请设置实体属性StoreGeneratedPattern=“Identity”


上述帖子中提到的ExecuteSqlCommand()命令将无法像


a另一个解决方案提到了

我在datacontext中找不到任何称为数据库的内容。请告诉我如何设置标识列,并在实体框架中使用它。如果您使用的是实体框架4.0,请使用此
上下文。ExecuteStoreQuery
您可以使用类似
属性(s=>s.Id)的fluent api设置列标识.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)。这非常有用。是否可以通过EF模型设计器进行设置?
context.Database
       .ExecuteSqlCommand("ALTER TABLE Place ALTER COLUMN Id IDENTITY (1000,1)");
  <EntityType Name="MY_ENTITY">
              <Key>
                <PropertyRef Name="UserID" />
              </Key>
              <Property Name="RecordID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />