如何在DBContext中创建Class并使用泛型来获取数据

时间:2018-03-16 17:47:58

标签: c# generics asp.net-core

我想使用generic从我的数据库中获取数据。

所以我创建了一个接口来做到这一点。我还创建了一个类import org.springframework.hateoas.core.Relation; @Relation(collectionRelation = "services") public class SDDFService extends ResourceSupport { } 来为DB Model

做继承
DBRepo

这是我的界面

public partial class UserAccount : DBRepo
{
    public int Id { get; set; }
    ...
}

public class DBRepo
{
}

中的

public class DBServices
{     
        public interface IDBAction<TEntity> where TEntity : DBRepo
        {  
            List<TEntity> GetAllData(TEntity _entity);
        }

        public class dbCRUD<TEntity> : IDBAction<TEntity> where TEntity : DBRepo
        {
            private readonly CoreContext _db;
            private DbSet<TEntity> dbSet;

            public dbCRUD(CoreContext _db)
            {
                this._db = _db;
                this.dbSet = _db.Set<TEntity>();
            }

            public List<TEntity> GetAllData(TEntity _entity)
            {
                var query = this.dbSet.Select(o=>o).ToList();
                return query;
            }
        }
    }

我收到此错误

  

'无法为'DBRepo'创建DbSet,因为此类型不包含在上下文的模型中。'

那么,如何在ServiceCollection() provider = new ServiceCollection() .AddScoped<IDBAction<DBRepo>, dbCRUD<DBRepo>>() .AddScoped<CoreContext>() .AddDbContext<CoreContext>(options => options.UseSqlServer(SysBase.testConn1)) .BuildServiceProvider(); provider.GetService<IDBAction<DBRepo>>().GetAllData(new UserAccount()); 中创建DBRepo或如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您必须使您的上传继承自DbContext。您可以check here了解更多详情。

public class CoreContext : DbContext
{
    public CoreContext(DbContextOptions<CoreContext> options)
        : base(options)
    { }

    public DbSet<UserAccount> Users { get; set; }
}