将我的entityframeworkcore从2.0迁移到7.0后。我的自定义代码中出现错误。你能帮忙解决这个问题吗
public static Task<T> SingleOrDefaultById<T>(this DbSet<T> dbSet, int? id)
where T : class
{
return SingleOrDefaultById(id, nonNullId => dbSet.FindAsync(nonNullId));
}
static async Task<T> SingleOrDefaultById<T, TId>(TId? id, Func<TId, Task<T>> searchFunc) where TId : struct
where T : class
{
if (id == null)
return null;
var result = await searchFunc(id.Value);
if (result == null)
throw new DomainException($"{id.Value} is not a valid {typeof(T).Name}");
return result;
}
这是错误详细信息:
无法从用法中推断方法 DbExtensions.SingleOrDefaultById(DbQuery, int?) 的类型参数。尝试显式指定类型参数。
这是错误的屏幕截图:
您需要为调用指定类型参数
SingleOrDefaultById(...)
-> SingleOrDefaultById<T, int>(...)
:
public static Task<T> SingleOrDefaultById<T>(this DbSet<T> dbSet, int? id)
where T : class
{
return SingleOrDefaultById<T, int>(id, nonNullId => dbSet.FindAsync(nonNullId));
}
附注
.NET 7 很快就会停止支持,下一个 LTS 是 .NET 8,所以我建议升级到它。