Nic*_*eer 14 c# entity-framework-core asp.net-core-mvc asp.net-core
我正在使用EF7进行标准CRUD操作,使用Dapper进行需要提高速度的更复杂查询.从startup.cs我将我的注入DbContext到我的DAL中,这显然是数据库查询.Dapper需要连接字符串.我想将我的EF7 DbContext连接字符串注入Dapper查询.
如何像以前一样从DbContext获取连接字符串:DbContext.Database.Connection?
它从EF7 变为Database了DatabaseFacade类型,并且DbConnection Connection也被删除了.
当然应该有一些DbContext我可以查询的持久连接字符串?
我现在使用的方法是,它有效:
public partial class CustomContext : DbContext
{
public readonly string _connectionString;
public CustomContext (DbContextOptions options)
: base(options)
{
_connectionString = ((SqlServerOptionsExtension)options.Extensions.First()).ConnectionString;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道它还处于测试阶段,但我错过了一些东西吗?
谢谢你的时间.
iea*_*lle 11
我搜索了EF7 来源,看来你的当前方法是正确的.
连接字符串存储在SqlServerOptionsExtension.当你调用UseSqlServer(connectionString) 代码时如下(只提取有趣的行):
var extension = options.FindExtension<SqlServerOptionsExtension>()
extension.ConnectionString = connectionString;
Run Code Online (Sandbox Code Playgroud)
我不确定为什么连接字符串被从显而易见的地方删除,但可能是devs抽象出连接字符串以允许我们使用非标准数据库(如内存数据库等).
这看起来更加清晰IMO:
Configuration.Get("Data:ConnectionString")
Run Code Online (Sandbox Code Playgroud)
如果你有一个完全物化的上下文,你也可以使用这个:
var conn = context.Database.GetDbConnection();
ConnectionString = conn?.ConnectionString;
conn?.Dispose();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6260 次 |
| 最近记录: |