Откройте SqlConnection и установите XACT_ABORT ON перед передачей открытого SqlConnection вашему конструктору DbContext. Шаблон для BYO-соединения в ядре EF:
SqlConnection con;
public Db(SqlConnection con)
{
this.con = con;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseLoggerFactory(loggerFactory)
.UseSqlServer(con, o => o.UseRelationalNulls());
base.OnConfiguring(optionsBuilder);
}
public override void Dispose()
{
con.Close();
base.Dispose();
}
или, если вы используете DI, введите IDbConnectionFactory или что-то подобное и напишите
public Db(IDbConnectionfactory cf)
{
this.con = cf.GetConnection();
}
Передача открытого соединения в DbContext конструктор предотвратит открытие и закрытие соединения DbContext для каждой команды. Это может немного увеличить размер вашего пула соединений, но это не должно иметь большого значения.