在c#中分离数据库实体层和数据访问层?

在c#中分离数据库实体层和数据访问层?,c#,connection-string,data-access-layer,3-tier,C#,Connection String,Data Access Layer,3 Tier,我想将DB实体层与DataAccessLayer分开 我将写下我的步骤: 创建空解决方案“DB_sep” 创建类库“DB” 将数据库的ADO.NET实体数据模型“DBEntity”添加到“DB”项目 将控制台应用程序“App”添加到“DB_sep” 将“DB”引用添加到“应用程序”项目 现在我想从'App'项目访问DB对象,但我无法访问dbContext,我遇到了错误 '在应用程序配置文件中找不到名为'DBEntity'的连接字符串。' 我有以下几行代码: try { DB.DBEntity d

我想将DB实体层与DataAccessLayer分开

我将写下我的步骤:

  • 创建空解决方案“DB_sep”
  • 创建类库“DB”
  • 将数据库的ADO.NET实体数据模型“DBEntity”添加到“DB”项目
  • 将控制台应用程序“App”添加到“DB_sep”
  • 将“DB”引用添加到“应用程序”项目
  • 现在我想从'App'项目访问DB对象,但我无法访问dbContext,我遇到了错误


    '在应用程序配置文件中找不到名为'DBEntity'的连接字符串。'

    我有以下几行代码:

    try
    {
    DB.DBEntity db = new DB.DBEntity();
    Customer cust = db.Customers.FirstOrDefault(c => c.ID == 2);
    Console.WriteLine(cust.Name);
    }
    catch (Exception ex)
    {
    
    Console.WriteLine(ex.Message);
    }
    

    有没有办法只在“DB”中保留连接字符串,或者我必须将其放在“App”项目中?

    “在应用程序配置文件中找不到名为“DBEntity”的连接字符串。”-似乎足够合法

    向实际执行的项目中添加一个
    app.config
    文件(例如,带有适当的文件)

    由于目标是EF,请注意特定的-即,此处它正在查找名称
    DBEntity
    。实际规则因使用的EF版本而异。(很可能模型项目中有一个
    app.config
    ,可以作为参考。)



    还可以指定DbConnection(或者连接字符串)到适当的构造函数重载-即通过依赖项注入-或以其他方式指定备用数据库提供程序。

    只是好奇为什么要两次删除对象是我的错误粘贴了两次我已经编辑了我正在使用EF,我的连接字符串在'DB'project
    app.config
    文件中,对我来说,最重要的是不要把连接字符串放在“App”项目中settings@DatoJanez连接字符串(或其他配置方法)也必须在执行项目/程序集的
    app.config
    中指定-在这种情况下,这是控制台应用程序(而不是DB项目)。如果您绝对不能(或不会)将连接字符串放入console应用程序的
    app.config
    中,请参阅其他方法之一-例如,在模型中创建数据库工厂(通过app.config配置指定)或通过其他方法创建数据库连接并将其传递给上下文构造函数(可能通过依赖项注入加载)。这只是我将WCF(数据访问层)与DB层分离的测试用例,我将用WCF更改控制台应用程序。我是否应该将连接字符串放入WCF项目中?如果您能提供帮助,我将不胜感激。@DatoJanez如果您有WCF(或其他Web)项目,然后将设置放入合并到IIS配置中的
    web.config
    文件中(与可执行程序集的
    app.config
    角色非常相似)。令人困惑的是,ehh?基本上,每个执行程序集都需要访问配置以创建适当的连接(并且每个配置可能不同)。好的,这意味着我应该将连接字符串放入DAL应用程序
    web/app.config
    文件中