使用具有“代码优先”模式的Entity Framework 4.0时,如何防止标识列上的自动增量

时间:2012-07-23 12:10:05

标签: .net entity-framework ef-code-first

我定义了POCO,与Entity Framework 4.0的Code First功能一起使用。

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

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

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

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

编辑:我从@flem得到的答案适合我。但我需要一个稍微不同的场景才能工作: 是否有可能以这样的方式定义POCO,当我设置它将使用它的值时,当我不这样做时,它会自动递增? 根据{{​​3}} mySQL应该很好地处理这个场景,但似乎实体框架没有......

1 个答案:

答案 0 :(得分:7)

将数据库生成设置为无。

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