Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何跳过SaveChanges上的无效字段_C#_.net_Entity Framework - Fatal编程技术网

C# 如何跳过SaveChanges上的无效字段

C# 如何跳过SaveChanges上的无效字段,c#,.net,entity-framework,C#,.net,Entity Framework,在使用SaveChanges保存实体并仅保存有效字段时,是否可以跳过无效值 在实体层面上跳过很简单,但我找不到在字段层面上跳过的方法。穆罕默德的回答给了我一个好主意。解决方案非常简单: try { context.Entry(objInDB).State = EntityState.Modified; context.SaveChanges(); } catch (Exception

在使用SaveChanges保存实体并仅保存有效字段时,是否可以跳过无效值


在实体层面上跳过很简单,但我找不到在字段层面上跳过的方法。

穆罕默德的回答给了我一个好主意。解决方案非常简单:

        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哈米德:那太棒了,但我怎么能做到呢?手动?