c# – 连接字符串 – N层应用程序

我有一个周围挖的答案,这个问题,但一切曾要求似乎对这个复杂的变化,并没有回答这个问题,所以我想我应该只问.

我正在开发以下的三层应用程序…..

> DAL – 使用实体框架的数据访问层
> BLL – 业务逻辑层
> Web App – MVC Web应用程序

我创建了一个Entity Framework模型,存储库类和我的连接字符串位于DAL App.Config文件中.我现在已经在BLL中创建了我的第一个类,它引用了DAL.当试图测试以下,非常基本的方法我得到一个与BLL中缺少连接字符串有关的错误.

public static List<DAL.Item> getItems() {

        List<DAL.Item> result = new List<Item>();

        DAL.Repositories.ItemRepository myRepository = new    DAL.Repositories.ItemRepository();
        result = myRepository.GetAll().ToList();

        return result;

    }

BLL为什么要查找连接字符串?我错过了一些非常明显的东西吗?

如果我需要在多个层中包含连接字符串,这会破坏n层结构的目的,那么最好的方法是什么?任何人都可以为我阐明这一点吗?

最佳答案 您正在新建一个DAL实例,而后者将尝试查看您的配置文件(由于范围在业务层/单元测试中,因此找不到.您应该做的是调查控制反转(IoC) )并将DAL注入业务逻辑层.然后你可以模拟你的DAL,它不会尝试并实际命中配置文件/数据库等.

点赞