.Net core1.0尝试激活我的存储库时出错

时间:2016-08-23 13:18:06

标签: c# asp.net-mvc entity-framework

我创建了一个包含MVC项目和2个.net核心类库项目的解决方案。 1表示服务层,1表示存储库层。我已成功通过层连接接口。但是在程序类中尝试执行host.Run();时出错。有了这个: InvalidOperationException: Unable to resolve service for type 'VisualRepository.VisualJobsDbContext' while attempting to activate 'VisualRepository.RecruiterRepository'.

这是我的DBcontext类的开始:

public partial class VisualJobsDbContext : DbContext
{
    private IConfigurationRoot _config;

    public VisualJobsDbContext() { }

    public VisualJobsDbContext(IConfigurationRoot config, DbContextOptions options) : base(options)
    {
        _config = config;
    }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);

        optionsBuilder.UseSqlServer(_config["ConnectionStrings:VisualJobsContextConnection"]);
    }

这是我的Recruiter存储库的开始

public class RecruiterRepository : GenericRepository<VisualJobsDbContext,Agent>, IRecruiterRepository
{
    private VisualJobsDbContext _context;

    public RecruiterRepository(VisualJobsDbContext context) : base(context)
    {
        _context = context;

    }

这两个都位于存储库层,我怀疑它失败了,因为我没有将其中任何一个设置为'New'

在ConfigureServices方法的MVC项目的启动类中,我有:

 services.AddSingleton(_configuration);
        // Add framework services.
        services.AddApplicationInsightsTelemetry(_configuration);

        services.AddLogging();
        services.RegisterServices();

        services.AddMvc();

其中Services.RegisterServices是服务层中的一个方法,它将我的接口注册到di容器中,包括添加存储库容器。 我怀疑我需要以某种方式在mvc层中注册VisualJobsDBContext,但我希望我可以保留它在存储库层中注册一些,因为我不希望从MVC直接连接到该层。任何人都可以向我指出如何在存储库层中注册我的存储库的示例。

在我的Repository Layer中,当我注册我的接口时,我目前有以下代码:

public static class RepositoryCollectionExtensions
{
    public static IServiceCollection RegisterRepositoryServices(this IServiceCollection services)
    {
        services.AddScoped<IRecruiterRepository, RecruiterRepository>();

        return services;
    }
}

所以我希望我能在这里做一些事情,例如services.AddDbContext(....但我似乎无法使签名正确。

0 个答案:

没有答案