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

时间:2013-11-14 07:38:20

标签: c# connection-string data-access-layer 3-tier

我想将数据库实体层与DataAccessLayer分开。

我会写下我的步骤:

  1. 创建空解决方案'DB_sep'
  2. 创建类库'DB'
  3. 将我的数据库的ADO.NET实体数据模型'DBEntity'添加到'DB'项目
  4. 将控制台应用程序'App'添加到'DB_sep'
  5. 将“DB”引用添加到“App”项目
  6. 现在我想从'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'项目中?

1 个答案:

答案 0 :(得分:1)

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

app.config文件(例如,使用相应的ConnectionString declaration)添加到实际执行的项目

自定位EF以来,请注意特定的Entity Framework Configuration Rules - 即此处正在寻找名称DBEntity。实际规则取决于使用的版本的EF。 (模型项目中有app.config可以作为参考的机会非常好。)


也可以为相应的构造函数重载指定DbConnection(或者可能是连接字符串) - 即通过依赖注入 - 或以其他方式指定备用数据库提供程序。