今天我收到以下错误代码:
InvalidOperationException: Cannot provide a value for property 'bookingData' on type 'BerHUB_reverse.Components.Pages.CreateBookingPage'. There is no registered service of type 'BerHUB_reverse.DataAccessLayer.Repositories.IBookingData`1[BerHUB_reverse.Components.Pages.Booking]'.
在 CreateBookingPage.razor 文件中是接口的 DI,但它无法识别它。 在 CreateBookingPage.razor 的第 16 行中:
@inject IBookingData<Booking> bookingData
我还为模型、数据类和接口编写了using语句:
@using BerHUB_reverse.DataAccessLayer.Repositories
@using BerHUB_reverse.DataAccessLayer.Data
@using BerHUB_reverse.Models
IBookingData.cs:
using System.Collections.Generic;
using System.Threading.Tasks;
namespace BerHUB_reverse.DataAccessLayer.Repositories
{
public interface IBookingData<T> where T : class
{
Task<int> InsertBooking(T model);
}
}
BookingData.cs:
using BerHUB_reverse.DataAccessLayer.Repositories;
using BerHUB_reverse.DataAccessLayer.SqlDataAccess;
using BerHUB_reverse.Models;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace BerHUB_reverse.DataAccessLayer.Data
{
public class BookingData : IBookingData<Booking>
{
private readonly ISqlDataAccess _db;
public BookingData(ISqlDataAccess db)
{
_db = db;
}
public async Task<int> InsertBooking(Booking model)
{
var parameters = new {model.Hostname, model.TimeslotID};
int insertedId = await _db.SaveDataReturnId("sp_InsertBooking", parameters);
return insertedId;
}
}
}
我还将它添加到了Program.cs中:
builder.Services.AddScoped<IBookingData<Booking>, BookingData>();
我不知道错误来自哪里,也许你可以帮助我。
这个问题的答案是,您不允许在 Blazor 中使用“Booking”名称作为模型、类或类似名称。我将“Booking”类更改为 BookingModel,现在它对我来说工作得很好。