.net 当使用实体框架4.0时,使用;“代码优先”;模式,如何防止标识列上的自动递增

.net 当使用实体框架4.0时,使用;“代码优先”;模式,如何防止标识列上的自动递增,.net,entity-framework,ef-code-first,.net,Entity Framework,Ef Code First,我正在定义POCO,与EntityFramework4.0的代码优先功能一起使用 但是,由于我的数据来自外部源,并且我希望保持标识列与外部源的标识列相同,因此我希望自己设置ID 在调用DbContext.Add()&context.SaveChanges()之前,我在代码中设置ID,但是ID值被忽略,并由DB列上定义的自动增量(AI)设置 数据库是mySQL,由EF自动生成 有人知道如何防止在ID列上创建AI属性,或者显式设置实体ID,尽管列是这样定义的吗 编辑:我从@flem那里得到的答案对我

我正在定义POCO,与EntityFramework4.0的代码优先功能一起使用

但是,由于我的数据来自外部源,并且我希望保持标识列与外部源的标识列相同,因此我希望自己设置ID

在调用DbContext.Add()&context.SaveChanges()之前,我在代码中设置ID,但是ID值被忽略,并由DB列上定义的自动增量(AI)设置

数据库是mySQL,由EF自动生成

有人知道如何防止在ID列上创建AI属性,或者显式设置实体ID,尽管列是这样定义的吗


编辑:我从@flem那里得到的答案对我很有用。但我也需要一个稍微不同的场景: 是否有可能以这样的方式定义POCO,即当我设置该值时,它将使用它,而当我不设置该值时,它将自动递增?
根据mySQL,应该可以很好地处理这种情况,但实体框架似乎没有…。

将数据库生成设置为“无”

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }

谢谢@flem。这正是我想要的。如果有人需要关于可用答案的信息,我从@flem那里得到的答案对我有用。但我也需要一个稍微不同的场景来工作:有没有可能以这样的方式定义POCO,即当我设置值时,它会使用它,而当我没有设置值时,它会自动递增?根据mySQL的说法,应该可以很好地处理这个场景,但实体Framwork似乎没有…@user1543611。我认为这不是现成的。你应该把它作为一个新问题发布。