2016-06-14 12 views

答えて

0

あなたは(古いバージョンでは)DbContextでそれを無効にすることができます

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
{ 
    optionsBuilder.UseSqlServer(@"Server=.\;Database=EFTutorial;Trusted_Connection=True;").SuppressAmbientTransactionWarning(); 
    base.OnConfiguring(optionsBuilder); 
} 

または

あなたは、JSONでの接続文字列がある場合:

var optionsBuilder = new DbContextOptionsBuilder(); 
optionsBuilder.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]).SuppressAmbientTransactionWarning(); 

Inを新しいバージョン:

var optionsBuilder = new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder(); 
    var extension = new SqlServerOptionsExtension(optionsBuilder.Options.GetExtension<SqlServerOptionsExtension>()) 
    { 
     ThrowOnAmbientTransaction = false 
    }; 

    ((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension); 
+1

@LukasJanecek:CS0117 'SqlServerOptionsExtension'には' ThrowOnAmbientTransaction'の定義が含まれていません。 – MERose

7

質問は2016年10月16日の時点で、RC2に関連していたが、これは私のために働いて、うまくいけば、それは他の誰かに便利です:統合テスト・セットアップクラスで上記で使用される

services.AddDbContext<OpenDataContext>(options => 
    { 
     options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); 
     options.ConfigureWarnings(x => x.Ignore(RelationalEventId.AmbientTransactionWarning)); 
    }); 

+0

アンビエントトランザクションが使用されないことを意味しますか? –

+0

私はそれがそのような振る舞いを変えるとは思わない。それは私のケースでは、私が正しく覚えている場合、テストの失敗を引き起こしていた警告と警告を抑制する。たとえば、私はInMemoryが周囲トランザクションをサポートしていないと考えています。そのため、警告が統合テストに失敗するのを防ぐために警告を抑制していました。トレードオフは大丈夫だった。私のコードサンプルがなぜUseSqlServerをスピンアップしているのかはわかりません。 o.O –

関連する問題