Вставить EntityFrameworkCore DbContext в AzureFunction - PullRequest
0 голосов
/ 24 мая 2018

У меня есть решение вроде

ABC.Domain (.net стандарт 2.0)

ABC.Service (.net стандарт 2.0 + EFCore + EFCoreSQL)

ABC.AzureFunction(.net стандарт 2.0) v2

ABC.Web (.net core 2.0)

Я использую шаблон UnitOfWork и Repository в моем ABC.Service и внедряю с использованием собственного расширения DI ядра .net.,он работает в веб-проекте, но я не могу разрешить ссылку DbContext в функциях Azure.

ABC.Web (работает)

Startup.cs

services.AddEntityFrameworkSqlServer()
.AddDbContext<AnimalHubContext>(o =>
{
o.UseSqlServer(this.Configuration["Data:ConnectionString"]);
});
services.AddScoped<IAccountRepository, AccountRepository>();
        services.AddScoped<IUnitOfWork, UnitOfWork>();
        services.AddSingleton<IAppConfigurationManager, AppConfigurationManager>();
        services.AddSingleton<ICachingService, CachingService>();
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddScoped<ABCContext>();

ABC.AzureFunction

AzureFunction DI

public static async Task RunAsync([QueueTrigger("analyzeimage",
        Connection = "animalhubnonblob_STORAGE")]string myQueueItem,
        TraceWriter log,
        [Inject(typeof(IUnitOfWork))]IUnitOfWork uow)

InjectConfiguration.cs

private void RegisterServices(IServiceCollection services)
    {
        string connectionString = "****************";
        services.AddEntityFrameworkSqlServer()
                .AddDbContext<AnimalHubContext>((serviceProvider, options)>
                 options.UseSqlServer(connectionString)
                .UseInternalServiceProvider(serviceProvider));

        services.AddScoped<ABCContext>();
        services.AddScoped<IAccountRepository, AccountRepository>();
        services.AddScoped<ICategoryRepository, CategoryRepository>();
        services.AddScoped<IUnitOfWork, UnitOfWork>();
    }

Ошибка System.Private.CoreLib: исключение при выполненииФункция: AnalyzeImageFunction.Microsoft.Azure.WebJobs.Host: параметр привязки исключения 'uow'.Microsoft.Extensions.DependencyInjection: Не удалось разрешить службу с областью действия «AnimalHub.Persistence.IUnitOfWork» от корневого поставщика.

...