从 net core 2.1 迁移到 net core 7 的问题

问题描述 投票:0回答:1

将我的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?) 的类型参数。尝试显式指定类型参数。

这是错误的屏幕截图:

.net asp.net-core .net-core asp.net-web-api
1个回答
0
投票

您需要为调用指定类型参数

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,所以我建议升级到它。

© www.soinside.com 2019 - 2024. All rights reserved.