Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从EF7 DbContext获取ConnectionString 我的设想:_C#_Asp.net Core_Asp.net Core Mvc_Entity Framework Core - Fatal编程技术网

C# 如何从EF7 DbContext获取ConnectionString 我的设想:

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

我将EF7用于标准的CRUD操作,而将Dapper用于需要提高速度的更复杂的查询。从startup.cs开始,我将我的
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();