2017-09-06 5 views
1

APIルートの1つに、raw upsert操作を行うためにraw SQL merge intoコマンドが使用されています。自動テストでは、inを使用するTestServerインスタンスがあります。 -memory db provider。インメモリプロバイダがraw SQLコマンドの実行をサポートしていないため、おそらくエラーですそうでない場合は、どうすればそれを動作させることができますか?EFコアとインメモリのdbプロバイダを使用したRaw sql

ここでのテストのためのStartupクラスです:あなたが期待するよう

// In memory DB for testing 
services.AddDbContext<MyContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("stuff")); 
services.AddDbContext<MyStatusContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("status")); 
services.AddDbContext<MyUserRolesContext>(optionsBuilder => optionsBuilder.UseInMemoryDatabase("userroles")); 

そして、APIコードは次のとおりです。

var count = await context.Database.ExecuteSqlCommandAsync(@"merge into ...", default(CancellationToken), ...); 
return count; 

このコードは、実際のデータベースに対して生産で正常に動作しますが、ちょうど私、私のテストでメモリ内のプロバイダと連携することはできません。私に何か希望がありますか?カスタムSQLスクリプトの通常のテスト戦略は何ですか?

+0

また、3つのコンテキストがすべて同じ実際のデータベースを指していることに留意するだけで、異なるドメイン(テーブルのセット)のコードには別のコンテキストがあります。 – gzak

答えて

1

InMemoryプロバイダがNoSQL非リレーショナルプロバイダであるため、あなたには希望はありません。

関連する問題