Несколько DbContext в .NET AspireC#

Место общения программистов C#
Ответить
Anonymous
 Несколько DbContext в .NET Aspire

Сообщение Anonymous »

Я пытаюсь добавить несколько экземпляров DbContext в приложение, которое запускается с помощью .NET Aspire. Я также хочу, чтобы в этих отдельных контекстах была доступна конфигурация (в данном случае чтобы таблицы истории миграции были в разных схемах). Наконец, в производственной среде приложение можно запустить без .NET Aspire.
Я изучил документацию Microsoft. Проблема, которую я здесь вижу, заключается в том, что, похоже, необходимо изменить конфигурацию базы данных для контейнера DI:
До:

Код: Выделить всё

builder.Services.AddDbContext(options => options.UseSqlServer("MY_CONNECTION_STRING"), sqlServerOptions =>
{
sqlServerOptions.MigrationsHistoryTable("__EFMigrationsHistory", ContextA.Schema);
}));

builder.Services.AddDbContext(options => options.UseSqlServer("MY_CONNECTION_STRING"), sqlServerOptions =>
{
sqlServerOptions.MigrationsHistoryTable("__EFMigrationsHistory", ContextB.Schema);
}));
После:

Код: Выделить всё

builder.AddSqlServerDbContext("NAME_FROM_ASPIRE", options =>
{
options.????? // No way for me to change required SQL server options
});

builder.AddSqlServerDbContext("NAME_FROM_ASPIRE", options =>
{
options.????? // No way for me to change required SQL server options
});
С этим изменением связано несколько проблем:
  • Я не могу выполнить настройку для настройки SQL-сервера должным образом. Я хочу этого.
  • Это не будет работать, если приложение не развернуто с использованием манифеста, созданного Aspire, а вместо этого, если Aspire используется только для локальной разработки («NAME_FROM_ASPIRE» действительно не будет существовать, если Aspire не используется).
В идеале я бы хотел, чтобы Aspire добавлял образ докера SQL Server с томом, который работает на конкретном порту, и позволял самому приложению решить, как следует настроить контекст (если я неправильно настрою DistributedApplicationBuilder, это будет на мне!)
Однако следующий код не работал (я не вижу открытых внешних портов в Docker программы управления SQL не могут подключиться к базе данных, приложение .NET сообщает: «Соединение отказано»):

Код: Выделить всё

var password = builder.AddParameter("SqlServerPassword");

var db = builder.AddSqlServer("database", password: password, port: 1434)
.WithVolume("data")
.AddDatabase("NAME_FROM_ASPIRE");

var app = builder.AddProject
("app")
.WithReference("db");
Что я делаю не так?


Подробнее здесь: https://stackoverflow.com/questions/790 ... net-aspire
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»