将新实体保存到数据库时出现问题。每当我保存新实体DbEntityValidationException
时就会发生。但是仔细查看变量的值和我实体的数据注释,我都遇到了。
我查看了数据库,问题似乎不在我要添加的实体上,而是在数据库中保存的先前实体上。出于某种原因,在添加实体之前以前具有值的一些外键字段现在为 NULL!
在调试过程中,我扫描了所有这些实体,在调用SaveChanges()
方法之前,这些字段都存在且不为空。然后在调用之后SaveChanges()
,发生验证错误,因为我认为SaveChanges()
可能做了一些使其他记录混乱的事情。
我不知道这是否与它有关,但是当我创建一个新实体时,我会创建它的一个新实例并单独分配它的属性。它的一些属性来自实体框架并附加。所以我将一个附加属性分配给一个分离的新对象。我不知道这是否导致了奇怪的行为。这是一个示例摘录:
Book book = new Book();
book.Title = "The FooBar";
book.Publisher = publisherRepository.Get(1); // will retrieve a Publisher object from EF
bookRepository.Add(book);
....
// under BookRepository class
public void Add(Book book)
{
dbContext.Books.Add(book);
// just to check if the other records are not messed up, I did this and
// check the values in VS Debugger
// At this point, the other records are not yet affected.
var books = dbContext.Books.Include("Publisher").ToArray();
dbContext.SaveChanges(); // error thrown here,
// checking at the validation error, other book
//instances have their Publisher property set to NULL!
}
请帮忙,因为我找不到解决此问题的其他方法。我自己是一个实体框架新手。