Entity framework core 如何使用EF7 RC2抑制环境事务警告

Entity framework core 如何使用EF7 RC2抑制环境事务警告,entity-framework-core,.net-core-rc2,Entity Framework Core,.net Core Rc2,如何使用EF7 RC2抑制环境事务警告 找不到SuppressAmbientTransactionWarning()方法。您可以在DbContext中禁用该方法(在旧版本中): 或 如果json中有连接字符串: var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]).Suppre

如何使用EF7 RC2抑制环境事务警告


找不到SuppressAmbientTransactionWarning()方法。

您可以在DbContext中禁用该方法(在旧版本中):

如果json中有连接字符串:

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

在新版本中:

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

    ((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension);
var optionsBuilder=new Microsoft.EntityFrameworkCore.DbContextOptionsBuilder();
var extension=new SqlServerOptionsExtension(optionsBuilder.Options.GetExtension())
{
ThrowOnAmbientTransaction=false
};
((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(扩展名);

虽然这个问题与RC2有关,但截至2016年10月16日,这对我来说很有效,希望对其他人有用:

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

上面在集成测试设置类中使用。

测试它,如果不起作用,请给我一个反馈。#来自@LukasJanecek:CS0117
sqlserveroptions扩展
不包含
ThrowOnAmbientTransaction
的定义。这是否意味着将不使用环境事务?我不相信它会改变行为像那样。它会抑制警告,如果我没有记错的话,我的例子中的警告会导致测试失败。例如,我认为InMemory不支持环境事务,所以我抑制的警告是为了防止该警告未能通过集成测试。我们可以接受的交易。但我不知道为什么我的代码示例会启动UseSqlServer。o、 o
services.AddDbContext<OpenDataContext>(options =>
   {
       options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
       options.ConfigureWarnings(x => x.Ignore(RelationalEventId.AmbientTransactionWarning));
   });