首页 > 解决方案 > OnSave EF Core 的 SQL 错误

问题描述

我在 EF Core 中有一段代码,应该在目标表中插入 100 多行。

我故意添加了一个错误,SQL 中有一个类型为Varchar(150). 我已经连续添加了更多 - 是的,我得到了错误,但我确实需要我插入到OnSave. 不只是一个错误。

SQL错误是:

表“Area_of_Expertise_Type”的“名称”列中的字符串或二进制数据将被截断。

截断值:“gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg”。

所以在代码中:

var AreaOfExpertiseType = new AreaOfExpertiseType
                {
                    AreaOfExpertiseTypeId = item.AreaofExpId,
                    Name = "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg",
                    Description = "Review Requirement for Description in CL"
                };

_clDBContext.AreaOfExpertiseType.Add(AreaOfExpertiseType);
               
try 
{
    _clDBContext.SaveChanges();
}
catch (DbUpdateException ex)
{
    // ErrList.Add(new ErrorList()
    //                 {
    //                     Error = ex.InnerException?.Message
    // });
    Console.WriteLine(ex.InnerException?.Message);
}

上面每个都有一个,所以我可以添加所有行。所以你可以看到我正在捕获OnSave.

任何想法为什么我只看到一个错误?我想从源数据库中获取 id,所以我真的需要查看所有错误。

标签: c#entity-framework-core

解决方案


要触发每个插入行的错误,您必须在每次插入后执行 .SaveChanges() ,插入作为事务处理,因此它只能失败一次。

为每一行保存会非常低效,通常我会建议反对它。


推荐阅读