DbContext仅验证已更改的属性

时间:2012-05-03 13:04:12

标签: entity-framework entity-framework-4.3

我正在尝试更新实体的属性,而不首先从数据库中获取实体。

问题是我只希望更新一些属性,并且实体验证器抱怨即使我没有更新那些,也不会填充非可空值。

我是唯一可以选择验证器吗?

我宁愿不转动验证器,因为我想验证我正在更新的属性。

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();

1 个答案:

答案 0 :(得分:2)

那是"a feature"。您必须关闭全局验证并分别验证每个已更改的属性。

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

我也不明白为什么这不是开箱即用的。