我在存储库设计模式中遇到以下错误。在数据访问层继承 EfCarDal 时,我从 EfEntityRepositoryBase 收到此错误。我无法克服这个问题。
严重性代码描述项目文件行抑制状态 错误CS0311类型“Carebook.Dal.Concrete.EntityFramework.Conetext.AppDbContext”不能用作泛型类型或方法中的类型参数“TContext” 'EfEntityRepositoryBase
'。没有从 'Carebook.Dal.Concrete.EntityFramework.Conetext.AppDbContext' 到 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`
namespace Carebook.Core.DataAccess.Concrete
{
public class EfEntityRepositoryBase<TEntity, TContext> : IEntityRepository<TEntity>, IDisposable
where TEntity : class, IEntity, new()
where TContext : IdentityDbContext, new()
{
public void Add(TEntity entity)
{
using (TContext context = new TContext())
{
var addEntity = context.Entry(entity);
addEntity.State = EntityState.Added;
context.SaveChanges();
}
}
public void Delete(TEntity entity)
{
using (TContext context = new TContext())
{
var deleteEntity = context.Entry(entity);
deleteEntity.State = EntityState.Deleted;
context.SaveChanges();
}
}
public void Dispose()
{
throw new NotImplementedException();
}
public TEntity Get(Expression<Func<TEntity, bool>>? filter)
{
using (TContext context = new TContext())
{
return context.Set<TEntity>().SingleOrDefault(filter);
}
}
public List<TEntity> GetAll(Expression<Func<TEntity, bool>>? filter = null)
{
using (TContext context = new TContext())
{
return filter == null ?
context.Set<TEntity>().ToList() :
context.Set<TEntity>().Where(filter).ToList();
}
}
public void Update(TEntity entity)
{
using (TContext context = new TContext())
{
var updateEntity = context.Entry(entity);
updateEntity.State = EntityState.Modified;
context.SaveChanges();
}
}
}
}
namespace Carebook.Dal.Concrete.EntityFramework.Conetext
{
public class AppDbContext : IdentityDbContext<User, Role, int>
{
public AppDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
base.OnModelCreating(builder);
}
public virtual DbSet<Car> Cars { get; set; }
public virtual DbSet<CarPicture> CarPictures { get; set; }
public virtual DbSet<Feature> Features { get; set; }
public virtual DbSet<Reservation> Reservations { get; set; }
public virtual DbSet<Pricing> Pricings { get; set; }
public virtual DbSet<Contact> Contacts { get; set; }
}
}
namespace Carebook.Dal.Concrete.EntityFramework
{
public class EfCareDal: EfEntityRepositoryBase<Car,AppDbContext>,ICarDal
{
}
}