c# - 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,所以我真的需要查看所有错误。
解决方案
要触发每个插入行的错误,您必须在每次插入后执行 .SaveChanges() ,插入作为事务处理,因此它只能失败一次。
为每一行保存会非常低效,通常我会建议反对它。
推荐阅读
- mysql - 使用 information_schema 查找所有达到其限制的整数列
- java - Java浮点数加倍
- c - 理解 C 中的积分算术
- json - Zabbix发现规则-如何填写key item
- c++ - 无法使用 C++ 中的对象函数更改对象变量
- java - 使用带有用户名和密码的 VaultTemplate
- javascript - Openlayers 5 图标未显示在地图上
- c# - XUnit c#中的功能测试中的类型化配置
- visual-studio-2017 - 来自现有源的 Visual Studio 2017 linux 项目
- reactjs - 如何从 StencilJS 父级渲染 React 子级?