【发布时间】:2021-01-06 00:06:36
【问题描述】:
非常感谢您。
我的项目面向 .NET Core 2.2。
我正在尝试定义一个使用 Masstransit 6.2.5 的服务,该服务使用带有 SQL 数据库的 SAGA 机器。
使用此代码
services.AddMassTransit(cfg =>
{
cfg.AddConsumersFromNamespaceContaining<SubmitVolunteerConsumer>(); //add consumer
cfg.AddSagaStateMachine<UserStateMachine, UserState>(typeof(UserStateMachineDefinition))
.EntityFrameworkRepository(r =>
{
r.ConcurrencyMode = ConcurrencyMode.Pessimistic;
services.AddDbContext<DbContext, UserStateDbContext>((provider, build) =>
{
build.UseSqlServer(connectionString, m =>
{
m.MigrationsAssembly(Assembly.GetExecutingAssembly().GetName().Name);
m.MigrationsHistoryTable($"__{nameof(UserStateDbContext)}");
});
});
});
cfg.AddBus(provider => RabbitMqBus.ConfigureBus(provider, false));
});
导致问题,因为它需要 MassTransit.EntityFrameworkCore 6.2.5(但是,这是使用 Microsoft.EntityFrameworkCore.Relational (3.1.3)),当我尝试调用/使用 DBContext 时会导致错误
遇到这个错误
无法从程序集“Microsoft.EntityFrameworkCore, Version=3.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”加载类型“Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptionsExtensionWithDebugInfo”。
您能否帮我找到一种在我的 Saga 机器上使用 SQL Server 而不使用引用 Entity Framework Core 3.x 的 Nuget 的方法?
顺便说一下,这是我的 Dbcontext
public UserStateDbContext(DbContextOptions options)
: base(options)
{
}
protected override IEnumerable<ISagaClassMap> Configurations
{
get { yield return new UserStateMap(); }
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("GRPPortal"));
}
【问题讨论】:
-
顺便说一下,这是我的 Dbcontext
标签: entity-framework-core masstransit