2012-07-23 41 views
2

我正在定义POCO,并与Entity Framework 4.0的Code First功能一起使用。当使用Entity Framework 4.0和“Code First”模式时,如何防止Identity列上的自动增量

但是,由于我的数据来自外部来源,我想保留与外部来源相同的标识列,因此我想自己设置标识。

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

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

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

编辑:我从@flem得到的答案适用于我。但是我需要一个稍微不同的场景来工作: 是否有可能以这种方式定义POCO,当我设置它使用它的值时,如果我不这样做,它会自动增加? 根据this mySQL forum answer mySQL应该很好地处理这种情况,但似乎Entity Framwork不...

回答

7

将数据库生成设置为无。

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

谢谢@flem。正是我在找的东西。如果有人需要关于可用的[代码第一数据注释](http://msdn.microsoft.com/en-us/library/gg197525(v = vs.103).aspx) – RonyK 2012-07-23 13:23:22

+0

的信息我从@flem作品中得到的答案为了我。但是我需要一个稍微不同的场景来工作: 是否有可能以这种方式定义POCO,当我设置它使用它的值时,如果我不这样做,它会自动增加? 根据[这个mySQL论坛的答案](http://forums.devshed.com/mysql-help-4/identity-insert-286989.html)mySQL应该很好地处理这种情况,但似乎实体Framwork不... – RonyK 2012-07-25 11:45:25

+0

@ user1543611。我不认为这是现成的。您应该将此作为新问题发布。 – 2012-07-25 12:36:56

相关问题