C# 如何从EF7 DbContext获取ConnectionString 我的设想:
我将EF7用于标准的CRUD操作,而将Dapper用于需要提高速度的更复杂的查询。从startup.cs开始,我将我的C# 如何从EF7 DbContext获取ConnectionString 我的设想:,c#,asp.net-core,asp.net-core-mvc,entity-framework-core,C#,Asp.net Core,Asp.net Core Mvc,Entity Framework Core,我将EF7用于标准的CRUD操作,而将Dapper用于需要提高速度的更复杂的查询。从startup.cs开始,我将我的DbContext注入到我的DAL中,DAL显然会执行数据库查询。Dapper需要一个连接字符串。我想将EF7 DbContext连接字符串注入Dapper查询 我的问题: 如何像以前一样从DbContext获取连接字符串:DbContext.Database.connection 在EF7中,它从Database更改为DatabaseFacade类型,同时也删除了DbConne
DbContext
注入到我的DAL中,DAL显然会执行数据库查询。Dapper需要一个连接字符串。我想将EF7 DbContext连接字符串注入Dapper查询
我的问题:
如何像以前一样从DbContext获取连接字符串:DbContext.Database.connection
在EF7中,它从Database
更改为DatabaseFacade
类型,同时也删除了DbConnection连接
当然,DbContext
中应该有一些我可以查询的持久连接字符串
我的研究:
我目前使用的方法是,它是有效的:
public partial class CustomContext : DbContext
{
public readonly string _connectionString;
public CustomContext (DbContextOptions options)
: base(options)
{
_connectionString = ((SqlServerOptionsExtension)options.Extensions.First()).ConnectionString;
}
}
我知道它仍处于测试阶段,但我是否遗漏了什么?
谢谢您的时间。我搜索了EF7,您目前的方法似乎是正确的
连接字符串存储在SQLServerOptions扩展中。调用UseSqlServer(connectionString)
时,如下所示(仅提取了感兴趣的行):
如果您有一个完全物化的上下文,您还可以使用:
var conn = context.Database.GetDbConnection();
ConnectionString = conn?.ConnectionString;
conn?.Dispose();
我使用的是EF7.侧注的BETA7:你应该考虑使用FromSql(Quey)和.asNoTraskIn()方法来提高EF的查询速度,这样你就不需要在一个项目中使用Depper-EF。这对我有效。ctor:public DbContext(DbContextOptions):base(options){This.Database=new DatabaseFacade(This);}这非常有效,但请记住,打开连接后密码将不再可用,除非连接字符串中的Persist Security Info设置为true。
Configuration.Get("Data:ConnectionString")
var conn = context.Database.GetDbConnection();
ConnectionString = conn?.ConnectionString;
conn?.Dispose();