捕捉Entity framework 6的详细异常提示

采用

try
            {

            }
            catch (Exception e)
            {

                throw;
            }

 不能捕捉到详细异常提示, e.message的内容为"Validation failed for one or more entities. See ‘EntityValidationErrors‘ property for more details."

如果需要获取详细的异常提示,采用

 1 try
 2         {
 3             return base.SaveChanges();
 4         }
 5         catch (DbEntityValidationException ex)
 6         {
 7             var errorMessages = ex.EntityValidationErrors
 8                     .SelectMany(x => x.ValidationErrors)
 9                     .Select(x => x.ErrorMessage);
10
11             var fullErrorMessage = string.Join("; ", errorMessages);
12
13             var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
14
15             throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
16         }

链接:http://stackoverflow.com/questions/15820505/dbentityvalidationexception-how-can-i-easily-tell-what-caused-the-error

时间: 2024-10-09 10:22:23

捕捉Entity framework 6的详细异常提示的相关文章

捕获Entity framework验证异常

Entity framework在验证未通过的时候默认不会抛出详细异常,这给我们debug带来很大的困难,不过我们可以手动捕获,见代码: private int Update(Employee entity) { string error = string.Empty; using (NorthwindEntities ctx = new NorthwindEntities()) { try { //ctx.Employees.Attach(entity); ctx.Entry(entity).

关于Entity Framework关系配置,提示列名XXXX_Id无效的问题

问题描述 : 数据库中有两张表,如下: Member(会员)表有外键RoleId,对应的是Role(角色)表的主键Id,业务逻辑是Member表的RoleId必须与Role表的Id对应(但在设计数据表时没有设置外键,使用EF(Entity Framework,下同)来配置) 首页Member的代码如下: public partial class Member { public int Id { get; set; } public string Name { get; set; } public

Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常

错误信息: “System.Data.Entity.Core.EntityCommandExecutionException”类型的异常在 EntityFramework.SqlServer.dll 中发生,但未在用户代码中进行处理. 其他信息:执行命令定义时出错.有关详细信息,请参阅内部异常. 跟踪代码找到详细信息: Entity Framework已有打开的与此Command相关联的DataReader,必须首先将它关闭. EF内部是使用DataReader作为资料存取,所以如果没关闭连接就

异常:error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'

error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient' error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the pro

Entity FrameWork异常:无法加载指定的元数据资源

今天在EF开发的过程中报出这样的错误:Entity FrameWork异常:无法加载指定的元数据资源 在网上看了一些帖子,一般说的解决方法都比较繁琐. 我是这么解决的: 首先我先说下我的文件结构层次:存在web类库和Dal类库,而数据的edmx是在DAL类库中. 我猜想可能是两个配置文件不同造成的,就把dal中的appconfig中的连接键复制到web的webconfig中,并删除掉原来的,果然就不报错了,但又出现了另一个错误:基础提供程序在 Open 上失败 然后,我把web中的webconf

解决Entity Framework中DateTime类型字段异常

今天把一个使用了Entity Framework的程序从MySql迁移到SqlServer时,发现运行时报了一个异常: System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值. 在网上查找了一下,具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范

Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”

早先做的一个练手的项目中, 使用到了Entity framework . 最近碰到一个问题,在edmx 里面选择“Update model from Database” 的时候提示了 “Choose Your Data Connection” 的数据库链接选择画面. 出现这个界面的话, 如果还继续走下去, 重新选择项目的DB connection的话, 原先已经加载到edmx的表,store procedure 等等 可能都需要删掉 ,再重新再加载一次. 表少点还好说, 多的话,就挺要命的. 花

MVC显示详细记录Without Entity Framework

看过此篇<MVC用非Entity Framework将数据显示于视图(二)>http://www.cnblogs.com/insus/p/3364482.html 了解到把数据库中数据表的数据显示于视图上.某一情况,我需要点击一下记录,能查看到其详细的数据. 在MVC实现这样的功能,其实也是很简单的.我们可以先在数据库中创建一个存储过程([dbo].[usp_FruitCategory_GetByPrimarykey]): 传入记录的主键值,来获取记录.去修改Models目录下的FruitCa

[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例

本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的.我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多关系的实体删除的操作过程. 你将学习到 怎样创建一个引用Entity Framework的项目: 怎样配置Entity Framework的数据库连接: 怎样去掉Entity Framework Code First 生成的表名的复数: 怎样通过EntityTypeConfiguartion配置实体的