EF6 DbFirst,如何将DbContext传递给存储库

时间:2017-05-12 20:05:15

标签: entity-framework dependency-injection asp.net-mvc-5 repository-pattern

首先,抱歉我的英语不好。

我正在开发一个有进取心的应用程序,它不是一个很大的应用程序,但我希望将来可以将这个架构重用于其他应用程序。

我正在使用EF6 DbFirst为我生成实体。 我有一个存储库层 我有一个使用存储库的服务层 Web部件是MVC 5,控制器调用服务 我正在使用依赖注入

我看到的所有示例都使用EF Code First,然后他们创建了一个在存储库项目中继承DbContext的类。

就我而言,EF已经创建了一个DbContext和我需要的所有de DbSets。就我而言,我不知道如何将DbContext传递给我的存储库。

摘录我的代码:

项目模型,由EF生成的上下文:

public partial class Entities : DbContext
{
    public Entities()
        : base("name=Entities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<TCLIENTE> TCLIENTE { get; set; }

项目存储库:

private readonly ApplicationContext context;
    private DbSet<TEntity> entities;
    string errorMessage = string.Empty;

    public Repository(ApplicationContext context)
    {
        this.context = context;
        entities = context.Set<TEntity>();
    }

    public IEnumerable<TEntity> GetAll()
    {
        return entities.AsEnumerable();
    }

我的applicationContext,我只是降序模型项目的上下文

public class ApplicationContext : Entities
{
    //public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options)
    //{

    //}        
}

服务项目:

public class UserService : IUserService
{
    private IRepository<TCLIENTE> userRepository;

    public UserService(IRepository<TCLIENTE> userRepository)
    {
        this.userRepository = userRepository;        
    }

    public IEnumerable<TCLIENTE> GetUsers()
    {
        return userRepository.GetAll();
    }

0 个答案:

没有答案