在使用EF时,报错:

对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性

添加一个验证方法:

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Rongzi.BZone.Functions;
using Rongzi.BZone.Common.Util;
using System.Data.Entity.Validation;
using System.Text;
using System.IO;

namespace Rongzi.BZone.Controllers.Manage
{
    public class ManageUserInfoApiController : ApiController
    {
        RongziBZoneEntities entity = new RongziBZoneEntities();

        /// <summary>
        /// 后台认证用户
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        [HttpPost]
        public ResponseContext EditCustomerInfo(RequestContext<CustomerInfo> req)
        {
            ResponseContext result = new ResponseContext();
            var obj = req.Content;
            if (obj == null)
            {
                result.Head.Ret = -;
                result.Head.Code = ErrCode.ParameterError;
                return result;
            }
            CustomerInfo info = entity.CustomerInfo.Where(x => x.IsDeleted == false).Where(x => x.CustomerID==obj.CustomerID).FirstOrDefault();
            if (info == null)
            {
                result.Head.Ret = -;
                result.Head.Code = ErrCode.DataIsnotExist;
                return result;
            }
            info.IdentificationState = obj.IdentificationState;
            info.IdentificationMemo = obj.IdentificationMemo;
            info.IsDeleted = obj.IsDeleted;
            info.UpdateUser = obj.UpdateUser;
            info.UpdateTime = DateTime.Now;
            IsValided<CustomerInfo>(info);
            entity.SaveChanges();
            return result;
        }

        public bool IsValided<T>(T model) where T : class
        {
            DbEntityValidationResult vResult = entity.Entry<T>(model).GetValidationResult();
            if (vResult == null) return true;
            if (vResult.IsValid) return true;
            StringBuilder builder = new StringBuilder();
            foreach (DbValidationError item in vResult.ValidationErrors)
            {
                builder.Append("出错字段:" + item.PropertyName);
                builder.Append("<br/>");
                builder.Append("错误描述:" + item.ErrorMessage);
                builder.Append("<br />");
            }
            throw new Exception("数据验证失败," + builder.ToString());
            return false;
        }
        #endregion
    }
}
 

这样就可以直接查出那些错,

我这个就是有个字段customerCard字段长度在数据库中由50改成了200,我看ef是string类型,就没有在意,然后就报错,长度不能超过50

这个也可以直接关掉ef的验证

      entity.Configuration.ValidateOnSaveEnabled = false;

这样也可以

发现EF中字段错误的更多相关文章

  1. EF中限制字段显示长度

    在EF中有些添加的字段 文本显示超多文字,想截取显示又没有截取功能. 怎么办? 我们可以在EF中类的属性中设置 你想限制这个用户名只能有10个字符长度 public String UserName { ...

  2. EF中修改对象的值的问题。。。(字段超级多的时候)

    一般EF中修改单个对象的值,我是这样处理的. 如:DBEntities db=new DBEntities(); student stu = db.student.firstOrdefault(m=& ...

  3. 【MM系列】SAP ABAP 编辑字段出现:对象编辑中的错误

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 编辑字段出现: ...

  4. EF 中 Code First 的数据迁移以及创建视图

    写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功 ...

  5. EF中的Code First

     一些概念 Ÿ POCO POCO(Plain Old CLR Object)的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样.所以POCO的解释就是“Plai ...

  6. EF中逆变和协变

    EF中的增删改查: 实现步骤: 1.声明一个EF的上下文. bjhksjEntities dbContext = new bjhksjEntities(); 2.声明一个实体. HKSJ_USERS ...

  7. 关于EF中出现FOREIGNKEY约束可能会导致循环或多重级联路径的问题

    ef中,我们创建外键的时候需要注意,否则会出现标题所示问题. 例:有项目表,项目收藏表,用户表 项目表有如下字段:ProjectId,InputPersonId等 项目收藏表有如下字段:Project ...

  8. 修改MySQL数据库中表和表中字段的编码方式的方法

    今天向MySQL数据库中的一张表添加含有中文的数据,可是老是出异常,检查程序并没有发现错误,无奈呀,后来重新检查这张表发现表的编码方式为latin1并且原想可以插入中文的字段的编码方式也是latin1 ...

  9. Team Foundation 中的错误和事件消息

    Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...

随机推荐

  1. 设计模式(Design Patterns)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  2. String对象的方法

    Function Description Example CompareTo() Compares one string to another ("Hello").CompareT ...

  3. json 数组转换为js数组

    $(function(){ var json = '[{"id":"1","tagName":"apple"},{&qu ...

  4. (转)JAVA 调用matlab

    本文仅用于学习. 原文地址链接:http://blog.csdn.net/wannshan/article/details/5907877 前段时间摸索了java调用matlab东西,不说学的有多深, ...

  5. Merge用法

    Merge用来从一个表中选择一些数据更新或者插入到另一个表中.而最终是用更新还是用插入的方式取决于该语句中的条件. 下面我们简单的举一个例子:   SQL> create table merge ...

  6. php数据访问:pdo用法、事物回滚功能和放sql注入功能

    PDO:    一.含义:        数据访问抽象层    二.作用        通过PDO能够访问其它的数据库    三. 用法:        1.造对象            ① $pdo ...

  7. 查看linux库文件32位还是64位

    查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a  *.a objdump -a  *.so

  8. Linux core 文件介绍

    Linux core 文件介绍 http://www.cnblogs.com/dongzhiquan/archive/2012/01/20/2328355.html 1. core文件的简单介绍在一个 ...

  9. C# 操作Cookie类

    1.Cookie操作类 using System; using System.Data; using System.Configuration;using System.Web;using Syste ...

  10. Xcode Shortcuts

    Description:⌘: Command     ⌥: Option     ⌃: Control    ←↑↓→: Left, Up, Down, Right                  ...