EntityFramework Saga persistance воссоздает схему в существующей БД

Я использую MT v3.0.17 с Automatonymous, я заметил, что таблица состояния экземпляра не создается, если база данных уже существует. Поскольку я направляю несколько разных автоматных конечных автоматов в одну и ту же базу данных, я бы хотел дать ей указание создавать таблицы, даже если база данных существует.

Как это может быть сделано?

Спасибо

2 ответа

Если вы используете Entity Framework, вы используете миграции для создания / обновления базы данных и связанных таблиц, как описано в документации Microsoft:

https://msdn.microsoft.com/en-us/data/dn579398.aspx

Если вы используете NHibernate, вы можете использовать методы проверки схемы, которые будут проверять и обновлять схему по мере необходимости. Это делается в модульных тестах, как показано:

https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit.AutomatonymousIntegration.Tests/SqlLiteSessionFactoryProvider.cs#L104

Вдохновленные модульными тестами самого masstransit, мы используем миграции EF, и явно как EF, чтобы применить упомянутые миграции во время запуска

 public static void Main()
    {
        var saga = new MySaga();

        var contextFactory = new SagaWithDependencyContextFactory();

        using (var context = contextFactory.CreateDbContext(Array.Empty<string>()))
        {
            context.Database.Migrate();
        }

        Func<DbContext> sagaDbContextFactory = () => contextFactory.CreateDbContext(Array.Empty<string>());

        var efSagaRepository =
            new EntityFrameworkSagaRepository<MySagaInstanceState>(sagaDbContextFactory);  

        // .. create bus etc..
Другие вопросы по тегам