ASP.NET Core Web API - 无法将类型 'System.Threading.Tasks.Task<Merchant?>' 隐式转换为 'Merchant'
ASP.NET Core Web API - Cannot implicitly convert type 'System.Threading.Tasks.Task<Merchant?>' to 'Merchant'
在我的 ASP.NET Core-6 Web API 中,我正在实施存储库模式。我有这个代码:
型号:
public class Merchant
{
public Guid Id { get; set; }
[Required]
[Column(TypeName = "Varchar")]
[StringLength(100)]
public string MerchantName { get; set; }
[Required]
[Column(TypeName = "Varchar")]
[StringLength(50)]
public string AccountNumber { get; set; }
public NotificationRequired? NotificationRequired { get; set; }
public string NotificationUrl { get; set; }
}
接口:
public interface IAdminMerchantRepository : IGenericRepository<Merchant>
{
Merchant GetMerchantById(Guid id);
}
public class AdminMerchantRepository : GenericRepository<Merchant>, IAdminMerchantRepository
{
private readonly ApplicationDbContext _dbContext;
private readonly DbSet<Merchant> _adminMerchants;
public AdminMerchantRepository(ApplicationDbContext dbContext) : base(dbContext)
{
_dbContext = dbContext;
_adminMerchants = _dbContext.Set<Merchant>();
}
public Merchant GetMerchantById(Guid id)
{
var merchant = _dbContext.Merchants.Include(e => e.User)
.FirstOrDefaultAsync(e => e.Id == id);
return merchant;
}
}
我遇到了这个奇怪的错误:
Cannot implicitly convert type 'System.Threading.Tasks.Task<Merchant?>' to 'Merchant'
在return商户
中突出商户
我从未使用过任何任务。
从哪里得到错误,我该如何解决?
谢谢。
您说“我从未使用过任何任务”,但事实并非如此。变量 var merchant
的类型为 System.Threading.Tasks.Task<Merchant?>
,因为您在创建它时使用了 .FirstOrDefaultAsync(e => e.Id == id)
。如果你用 .FirstOrDefault(e => e.Id == id)
替换它,你会没事的(当然,除了它会 return 一个 Merchant?
而不是 Merchant
)。
在我的 ASP.NET Core-6 Web API 中,我正在实施存储库模式。我有这个代码:
型号:
public class Merchant
{
public Guid Id { get; set; }
[Required]
[Column(TypeName = "Varchar")]
[StringLength(100)]
public string MerchantName { get; set; }
[Required]
[Column(TypeName = "Varchar")]
[StringLength(50)]
public string AccountNumber { get; set; }
public NotificationRequired? NotificationRequired { get; set; }
public string NotificationUrl { get; set; }
}
接口:
public interface IAdminMerchantRepository : IGenericRepository<Merchant>
{
Merchant GetMerchantById(Guid id);
}
public class AdminMerchantRepository : GenericRepository<Merchant>, IAdminMerchantRepository
{
private readonly ApplicationDbContext _dbContext;
private readonly DbSet<Merchant> _adminMerchants;
public AdminMerchantRepository(ApplicationDbContext dbContext) : base(dbContext)
{
_dbContext = dbContext;
_adminMerchants = _dbContext.Set<Merchant>();
}
public Merchant GetMerchantById(Guid id)
{
var merchant = _dbContext.Merchants.Include(e => e.User)
.FirstOrDefaultAsync(e => e.Id == id);
return merchant;
}
}
我遇到了这个奇怪的错误:
Cannot implicitly convert type 'System.Threading.Tasks.Task<Merchant?>' to 'Merchant'
在return商户
中突出商户我从未使用过任何任务。
从哪里得到错误,我该如何解决?
谢谢。
您说“我从未使用过任何任务”,但事实并非如此。变量 var merchant
的类型为 System.Threading.Tasks.Task<Merchant?>
,因为您在创建它时使用了 .FirstOrDefaultAsync(e => e.Id == id)
。如果你用 .FirstOrDefault(e => e.Id == id)
替换它,你会没事的(当然,除了它会 return 一个 Merchant?
而不是 Merchant
)。