为什么EntityFramework代码首先忽略代码中设置的键值

时间:2013-12-23 13:30:20

标签: .net entity-framework frameworks entity

我创建了一个基本的Entity Framework测试项目,该项目利用Code-First方法填充具有两个表的数据库。

但是,我注意到框架似乎是自动为一个条目赋值,该条目用作另一个表的外键,尽管事实上我已经在代码中设置了值。

通过调试器检查时,我可以看到对象的属性是正确的,直到调用SaveChanges()为止,但在检查数据库时,我设置的int已被自动生成的值覆盖。

我可以通过将以下属性应用于属性来解决这个问题:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]

但是,我认为只有在代码中没有设置值时才会自动生成值。我错了,还是会出现这样的行为?

我注意到对于不作为外键的主键,同样的行为是不正确的。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:3)

  

[关键]
  [DatabaseGenerated(DatabaseGeneratedOption.None)]

如果使用Key int Id并且您希望提供Id,则需要Annotation或Fluent API等效项。

Id int的

Ef Annotations默认行为