EF Core 为所有数据库连接设置 XACT_ABORT
EF Core set XACT_ABORT for all database connections
我正在使用 EF Core 3.1 连接到 SQL 服务器。我想 SET XACT_ABORT ON
为 SQL 服务器打开我在我的应用程序中建立的所有连接。
我可以 运行 启动或创建上下文吗?因为我正在使用 AWS RDS,所以我无法在服务器范围内启用它。
如有任何帮助,我们将不胜感激。
打开 SqlConnection 并设置 XACT_ABORT ON,然后再将打开的 SqlConnection 传递给 DbContext 构造函数。 EF 核心中 BYO 连接的模式是
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 为每个命令打开和关闭连接。这可能会稍微增加您的连接池的大小,但这应该不是什么大问题。
我正在使用 EF Core 3.1 连接到 SQL 服务器。我想 SET XACT_ABORT ON
为 SQL 服务器打开我在我的应用程序中建立的所有连接。
我可以 运行 启动或创建上下文吗?因为我正在使用 AWS RDS,所以我无法在服务器范围内启用它。
如有任何帮助,我们将不胜感激。
打开 SqlConnection 并设置 XACT_ABORT ON,然后再将打开的 SqlConnection 传递给 DbContext 构造函数。 EF 核心中 BYO 连接的模式是
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 为每个命令打开和关闭连接。这可能会稍微增加您的连接池的大小,但这应该不是什么大问题。