Я что-то здесь упускаю. Я следил за этим проектом github и в нем автор специально добавляет и расширение статического метода:
public static class StartupExtension
{
public static void EnsureMigrationsRun(this IApplicationBuilder app, IConfiguration configuration)
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var dbContextFactory = serviceScope.ServiceProvider.GetService<IDbContextFactory>();
var allTenants = serviceScope.ServiceProvider.GetService<ITenantProvider>().AllTenants;
foreach (var tenant in allTenants)
{
var context = dbContextFactory.CreateDbContext(tenant, configuration);
context.Database.Migrate();
}
}
}
}
В своем файле startup.cs он добавил его (последний элемент) в метод configure следующим образом:
app.EnsureMigrationsRun(Configuration);
Итак, я подумал о том, чтобы сделать нечто подобное - добавить метод в конец моего метода настройки.
public static void EnsureMigrationsAndInitialisationRun(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var dbContextFactory = serviceScope.ServiceProvider.GetService<IDbContextFactory>();
var allTenantConnectionStrings = serviceScope.ServiceProvider.GetService<ISessionServices>().AllTenantConnectionStrings();
foreach (var tenantConnectionString in allTenantConnectionStrings)
{
var context = dbContextFactory.CreateDbContext(tenantConnectionString);
context.Database.Migrate();
// Add in the initializations here.
}
}
}
В проекте, который я смотрю, ясно, что его метод доступен для добавления (проверено на intellisense), однако в моем файле startup.cs у меня нет возможности добавить этот или любой другой метод, кроме тех, которые поставляются в стандартной комплектации.
Я все же добавил это:
app.EnsureMigrationsAndInitialisationRun();
и получил следующую ошибку.
Ошибка CS1061 «IApplicationBuilder» не содержит определения для
'EnsureMigrationsAndInitialisationRun' и нет доступного расширения
Метод EnsureMigrationsAndInitialisationRun принимает первый
может быть найден аргумент типа 'IApplicationBuilder' (вы пропустили
директива об использовании или ссылка на сборку?)
Я намеревался добавить в приложение несколько элементов ... включая промежуточное программное обеспечение сеанса, но оно также не отображается.
Как добавить методы, такие как промежуточное программное обеспечение сеанса, и метод инициализации этого случая в методе configure?
Почему эти статические методы не отображаются?
EDIT ..
Я смог добавить промежуточное ПО по директиве app.UseMiddleware<ConfigureSessionMiddleware>();
Однако я до сих пор не знаю, что мне нужно сделать, чтобы добавить файл инициализации в конец конвейера приложения