在使用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. php一些技巧函数

    current() next() prev() 范例 <?php $people = array("Peter", "Joe", "Glenn& ...

  2. var object dynamic的区别

    一.var var本身不是一种类型,只是一种语法糖:var声明的变量在赋值的时候即已决定其变量类型,编译时会进行校验. 二.object object是所以类型的基类,故可以赋任何类型的值. 三.dy ...

  3. The P4 Language Specification v1.0.2 Header and Fields

    前言 本文参考P4.org网站给出的<The P4 Language Specification v1.0.2>的第二部分首部及字段,仅供学习:). 欢迎交流! Header and Fi ...

  4. Memcached 笔记与总结(6)PHP 实现 Memcached 的一致性哈希分布算法

    首先创建一个接口,有 3 个方法: addServer:添加一个服务器到服务器列表中 removeServer:从服务器列表中移除一个服务器 lookup:在当前的服务器列表中找到合适的服务器存放数据 ...

  5. userDefaults

    // // RootViewController.m #import "RootViewController.h" @interface RootViewController () ...

  6. 合金装备V 幻痛 制作技术特辑

    合金装备V:幻痛 制作特辑 资料原文出自日版CGWORLD2015年10月号   在[合金装备4(Metal Gear Solid IV)]7年后,序章作品[合金装备5 :原爆点 (Metal Gea ...

  7. PHP正则表达式及实例

    PHP正则表达式及实例 博客分类: Php / Pear / Mysql / Node.js 正则表达式PHPWordPressFPApache  关联: 正则表达式 去除连续空白 + 获取url + ...

  8. HTML5 测验记录

    结果:11/20 您的回答: 1.HTML5 之前的 HTML 版本是? 您的回答:HTML 4 正确答案:HTML 4.01 2.HTML5 的正确 doctype 是? 您的回答:<!DOC ...

  9. VCL自带的TabControl真心不好用...

    不是说功能, 而是指自绘能力, 开启OwnerDraw以后, 画是可以画了, 可是为啥每个Tab页头的边框不能变捏 只能是灰秃秃的, 感觉很不和谐 RZ的TabControl很强大, 可惜想用它需要带 ...

  10. 我的第一个chrome扩展(1)——读样例,实现时钟

    学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...