2012-05-03 34 views
1

我與更新對實體屬性,而無需從數據庫中首先得到了實體試驗。的DbContext,只確認更改的屬性

麻煩的是我只希望更新一些屬性和實體驗證抱怨說,非空的值尚未填寫即使我不更新的。

是我把驗證的唯一選擇?

我寧願不轉的檢驗器,我想驗證我更新的屬性。

TestContext context = new TestContext(); 

LearningResource learningResource = new LearningResource(); 

learningResource.LearningResourceID = 132; 


DbEntityEntry<LearningResource> entry = context.Entry(learningResource); 

context.LearningResources.Attach(learningResource); 

entry.State = EntityState.Unchanged; 

learningResource.Title = "alex"; 

entry.Property(e => e.Title).IsModified = true; 

//Only seems to work if I do this. 
//context.Configuration.ValidateOnSaveEnabled = false; 

context.SaveChanges(); 

回答

2

那就是"a feature"。您必須關閉全局驗證並單獨驗證每個已更改的屬性。

var result = entry.Property(e => e.Title).GetValidationResult(); 

我也不明白爲什麼這不會開箱即用。

+0

謝謝@Ladislav –