我想简单地加载一个实体,修改一个属性,然后将其保存回数据库。修改实体框架中的实体属性导致验证错误
var db = new NewsletterContext();
var newsletter = db.Newsletters.Find(x => x.ID==newsletterID);
newsletter.SomeProperty = 5;
db.SaveChanges();
这导致验证错误,因为有这是必需的,当我做了Find()
显然没有装载通讯对象的某些特性。
我可以使用Include()
每个需要的属性跟一个Where()
解决这个问题:
var db = new NewsletterContext();
var newsletter = db.Newsletters.Include(x => x.RequiredProp1)
.Include(x => x.RequiredProp2).Include(x => x.RequiredProp3)
.Where(x => x.ID==newsletterID)
.FirstOrDefault();
db.SaveChanges();
这是不是一个非常优雅的解决方案,如果我增加更多的所需性能的Newsletter
对象将打破。
有没有更好的解决方案?
是的,对不起,只是术语。 RequiredProp1等实际上是相关的实体。通讯实体本身加载正常,我可以阅读所有的属性,但回退导致错误。 – Judo 2012-01-09 06:11:53
EF 4.1在MVC 3应用程序中首先使用.NET 4.0进行编码。 – Judo 2012-01-09 06:31:04