我创建了一个基本的Entity Framework测试项目,该项目利用Code-First方法填充具有两个表的数据库。
但是,我注意到框架似乎是自动为一个条目赋值,该条目用作另一个表的外键,尽管事实上我已经在代码中设置了值。
通过调试器检查时,我可以看到对象的属性是正确的,直到调用SaveChanges()为止,但在检查数据库时,我设置的int已被自动生成的值覆盖。
我可以通过将以下属性应用于属性来解决这个问题:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
但是,我认为只有在代码中没有设置值时才会自动生成值。我错了,还是会出现这样的行为?
我注意到对于不作为外键的主键,同样的行为是不正确的。
任何帮助都非常感激。
答案 0 :(得分:3)
[关键]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
如果使用Key int Id并且您希望提供Id,则需要Annotation或Fluent API等效项。
Id int的Ef Annotations默认行为