我想在代码中抛出Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException
,但是DbUpdateConcurrencyException
具有单个构造函数:
public DbUpdateConcurrencyException(
[NotNullAttribute] string message,
[NotNullAttribute] IReadOnlyList<IUpdateEntry> entries)
我在第二个参数中传递了null
,但是正如[NotNullAttribute]
所说,它不能为null。
在我的try-catch代码中,我只是捕获了DbUpdateConcurrencyException
而我不在乎它的属性(Message或...)。
有什么方法可以直接从此类中进行抛出和实例化吗? 我知道我可以创建自定义异常,但我宁愿DbUpdateConcurrencyException。
答案 0 :(得分:1)
似乎您正在运行EF core 2.2 or below,因为您正在寻找have been introduced in ef core 3.0的重载。因此,一个答案将是升级到EF core 3.0或更高版本,
如果这不是一个选项,则可以在过渡期间定义您的自定义异常(我知道您宁愿避免这种情况,但这可能是最干净的解决方法):
public class MyDbUpdateConcurrencyException : DbUpdateException
{
public MyDbUpdateConcurrencyException(string message) : base(message, (Exception)null)
{
}
}
UPD 正如注释中所指出的,您可以使用当前的EF定位不同版本的.net Core运行时。我只是想指出,由于引入了a few breaking changes,因此升级到EF core 3.0可能很棘手,因此传递一个空列表(如 Erik Philips 所建议的那样)可能是更合适的解决方案根据您的情况。
答案 1 :(得分:0)
只需传入具有空条目的列表即可。
// @nuget: Microsoft.EntityFrameworkCore -version 2.2
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Update;
public class Program
{
public static void Main()
{
throw new DbUpdateConcurrencyException("message"
, new List<IUpdateEntry> { null } );
}
}