Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
49 个问题
保存到 SQL Server 时,如何在 C# 中获取导致 Entity Framework 7 中 DbUpdateException 的实体和字段?
Note:此问题总结整理于:How would I know which field causing DbUpdateException in Entity Framework 7 ?
DbUpdateException 在许多情况下包含更新失败,并且很难一次性获取失败字段。目前使用 C# 获取更新失败的字段,可以按如下方式更改代码:
try
{
using Db db = new Db();
T_Row row = db.T_Rows.Single(e=>e.id == 123)
row.f1 = ...;
db. SaveChanges();
row.f2 = ...;
db. SaveChanges();
row.fn = …;
db. SaveChanges();
}
catch (DbUpdateException ex)
{
var failedEntries = ex.Entries;
foreach (var entry in failedEntries)
{
var entityName = entry. Metadata. Name;
var properties = entry.Properties.Where(p => p.IsModified && !p.IsTemporary);
foreach (var property in properties)
{
var propertyName = property.Metadata.Name;
Console.WriteLine($"Failed to update field: {propertyName} in entity: {entityName}");
}
}
}
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。