如何在一处维护 EF 连接字符串?

Posted

技术标签:

【中文标题】如何在一处维护 EF 连接字符串?【英文标题】:how to maintian the EF connection string at one place? 【发布时间】:2017-07-24 05:01:25 【问题描述】:

我的项目解决方案中有以下内容,我试图在一个地方维护实体框架的数据库连接,这样如果我必须将数据库切换到不同的供应商(如 mysql 到 MSSQL,反之亦然),我可以只需在一个地方更改连接名称,不必在所有地方都更改...我尝试了以下结构但遇到错误,如何解决?

项目#1

Dashboard.EntityFramework
-->bitDbConnection.cs


using


namespace Dashboard.EntityFramework

    public class bitDbConnection
    
        BitDatabaseEntities bitDB = new BitDatabaseEntities();
    

项目#2

Dashboard.Repository
-->Repository.cs

using Dashboard.EntityFramework
when I try use to bitDB variable I can the below error

错误:-

The name bitDB does not exist in current context

【问题讨论】:

【参考方案1】:

这可能不是你想要的,但为了让你的代码工作,这样写:

namespace Dashboard.EntityFramework

    public class bitDbConnection
    
        public BitDatabaseEntities bitDB = new BitDatabaseEntities();
    


using Dashboard.EntityFramework
public class Repository

    public void DoSomething()
    
        var bitDB = new bitDbConnection().bitDB;

    

所以,先将 bitDB 字段公开,然后再使用它...

在 cmets 中编辑问题:

public class Repository

    private BitDatabaseEntities bitDB = new BitDatabaseEntities().bitDB;
    public void DoSomething()
    
        var x = bitDB.ToString();
    

【讨论】:

M - 有没有办法在函数外和类内声明 var bitDB = new bitDbConnection().bitDB; class Repository Marko - 有没有办法在函数外和类内声明var bitDB,以便类内的任何函数都可以使用它.. Marko M - 使用编辑后的答案,连接字符串不再在一个地方,对吗?如果我定义一个新类,我必须为每个类定义 bitDB 对吗?为什么我们不能维护一个文件中的连接,然后在类范围内定义它?C#中有什么东西可以防止这种情况发生吗? 你不够具体,所以我无法提供足够的答案。即使我的第一个答案只是“当前上下文中不存在名称 bitDB”的解决方案,但这些东西与连接字符串无关...... 我在许多项目中工作,其中连接字符串在配置文件中定义并在其他地方使用没有问题,但正如我所说,你的问题太宽泛了。尝试添加更好的示例或您的问题,它可能会得到解决。祝你好运。

以上是关于如何在一处维护 EF 连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EF6 中将连接字符串传递给 DataContext

如何动态更改EF的DBContext的连接字符串

如何动态更改EF的DBContext的连接字符串

如何在连接字符串中为 EF Code First 配置 ProviderManifestToken

EF4 Code only ctp5:如何设置连接字符串 devart oracle?

EF核心数据迁移已移至单独的项目;如何获得连接字符串?