C# 如何跳过SaveChanges上的无效字段
在使用SaveChanges保存实体并仅保存有效字段时,是否可以跳过无效值C# 如何跳过SaveChanges上的无效字段,c#,.net,entity-framework,C#,.net,Entity Framework,在使用SaveChanges保存实体并仅保存有效字段时,是否可以跳过无效值 在实体层面上跳过很简单,但我找不到在字段层面上跳过的方法。穆罕默德的回答给了我一个好主意。解决方案非常简单: try { context.Entry(objInDB).State = EntityState.Modified; context.SaveChanges(); } catch (Exception
在实体层面上跳过很简单,但我找不到在字段层面上跳过的方法。穆罕默德的回答给了我一个好主意。解决方案非常简单:
try
{
context.Entry(objInDB).State = EntityState.Modified;
context.SaveChanges();
}
catch (Exception ex)
{
var exception = ex as DbEntityValidationException;
if (exception != null)
{
exception.EntityValidationErrors.ToList().ForEach(error =>
{
error.ValidationErrors.ToList().ForEach(validationError =>
{
error.Entry.Property(validationError.PropertyName).IsModified = false;
});
});
context.SaveChanges();
}
}
您可以在调用savechanges之前验证所有字段,并仅在实体通过验证时才将值分配给实体。请注意,您传递的值必须满足实体上的所有必要约束。为什么需要这样做?您将得到一半是旧的一半是新的对象,而用户不知道信息的一半在哪里gone@Sergey别列佐夫斯基:这是生意requirement@Abdul哈米德:那太棒了,但我怎么能做到呢?手动?