私は統合テストのためにInMemoryDatabaseを実装している.NETコアアプリケーションを開発中です。私はthis linkの指示に従っています。InMemory.TransactionManagerのget_CurrentTransactionに実装がありません
は、基本的には私がやったことあるAddDbContext法を用いた(Startup.csで)サービスを設定する方法を示していますし、私はUseInMemoryDatabaseへの呼び出します
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options => options.UseInMemoryDatabase());
services.AddMvc();
services.AddSingleton<ITodoRepository, TodoRepository>();
services.AddScoped<IAssetRepository, AssetRepository>();
}
マイAppDbContextがで別のプロジェクトで定義されているが解決策そのように定義されています
:私はこのような設定方法をコーディングする必要がリンクに応じてバックStartup.csファイルへpublic class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> dbContextOptions) :
base(dbContextOptions)
{
}
public DbSet<Asset> Assets { get; set; }
public DbSet<TodoItem> Todos { get; set; }
}
、
このスニペットは正常に実行され、GetServiceの呼び出しを実行します。この呼び出しは、AppDbContextのコンストラクタを実行しますが、コンストラクタはフォールリング例外でクラッシュします。基本コンストラクタ:base(dbContextOptions)を呼び出すとクラッシュします。
メソッド 'get_CurrentTransaction' タイプで 'Microsoft.EntityFrameworkCore.Storage.Internal.InMemoryTransactionManager' アセンブリから 'Microsoft.EntityFrameworkCore.InMemory、 バージョン= 1.0.1.0、文化=中立、なPublicKeyToken = adb9793829ddae60' 実装はありません。
私はこの例外の原因を突き止めることはできません。誰かが私にある方向を教えてくれますか?
ありがとうございます!
Microsoft.EntityFrameworkCore.InMemoryのv2.0.1で同じエラーが発生しました.v2.0.0にロールバックすると解決されます。既視感。 –