c# - Entity Framework 等效于ADO.Net的DataRow.HasErrors?

标签 c# entity-framework error-handling

如果Entity Framework具有等效于DataRow.HasErrors的ADO.Net,那就太好了。

我遇到服务器在保存时返回错误的情况(例如“二进制/字符串数据将被截断,不可为空的字段设置为null等),并且无法分辨哪个实体导致了问题。” .Net这更容易,因为在告诉DataAdapter保存更改之后,我可以遍历所有数据行并仅检查具有HasErrors的数据行。虽然这不会查明该字段,但至少会告诉我是哪一行导致了问题。

我似乎找不到与此等效的实体。谁知道有没有?

最佳答案

在两种情况下,您都描述当您尝试保存时会抛出DbUpdateException

此异常具有一个名为Entries的属性。您可以使用此属性来获取导致失败的实体。每个实体都是一个DbEntityEntry对象,并且具有一个属性,该属性具有真实的entity并加载有关错误原因等的更多信息。

因此,在您描述的情况下,仅捕获异常并查看Entries集合以找出问题的根本原因,如下所示:

try
{
    c.SaveChanges();
}
catch (DbUpdateException ex)
{                   
    IEnumerable<object> myBadEntities = 
        ex.Entries.Select(e => e.Entity);
}

关于c# - Entity Framework 等效于ADO.Net的DataRow.HasErrors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940666/

相关文章:

c# - 处理用户控件,真的意味着编辑 .designer.cs 文件吗?

c# - []、get_Item() 和 Item[] 之间的 Excel Interop 区别

c# - EntityFramework 存储库模板 - 如何在模板类中编写 GetByID lambda?

c# - 如何在 ADO.NET Entity Framework 中加入

c# - 处理 Task 中的异常

c# - 自动重启崩溃的 WPF 应用程序

c# - 如何将 TreeViewItem 放入生成的 TreeViewItem 中?

c# - EF代码优先。相关实体未加载

r - 为什么 withCallingHandlers 仍然停止执行?

powershell - 我如何从TeamCity构建中运行的Powershell脚本收到有意义的错误消息?