0

我正在使用带有 Automatonymous 的 MT v3.0.17,我注意到如果数据库已经存在,则不会创建实例状态表。由于我将多个不同的自动状态机指向同一个数据库,我想指示它创建表,即使数据库存在。

如何才能做到这一点?

谢谢

4

2 回答 2

0

如果您使用的是实体框架,则可以使用迁移来创建/更新数据库和关联的表,如 Microsoft 所述:

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

如果您使用 NHibernate,则可以使用 Schema 验证方法,它将根据需要验证和更新模式。这是在单元测试中完成的,如下所示:

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

于 2015-12-31T22:55:23.333 回答
0

受 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..
于 2018-01-12T10:51:04.633 回答