我想簡單地加載一個實體,修改一個屬性,然後將其保存回數據庫。修改實體框架中的實體屬性導致驗證錯誤
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