存储库设计模式identitydbcontext问题

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

我在存储库设计模式中遇到以下错误。在数据访问层继承 EfCarDal 时,我从 EfEntityRepositoryBase 收到此错误。我无法克服这个问题。

严重性代码描述项目文件行抑制状态 错误CS0311类型“Carebook.Dal.Concrete.EntityFramework.Conetext.AppDbContext”不能用作泛型类型或方法中的类型参数“TContext” 'EfEntityRepositoryBase'。没有从 'Carebook.Dal.Concrete.EntityFramework.Conetext.AppDbContext' 到 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`

c# asp.net-core repository-pattern repository-design crud-repository
1个回答
0
投票
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
    {


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