我在多环境设置(DEV,TEST,PREPROD,PROD)中工作,需要编写可以在环境之间轻松切换的测试(使用例如环境作为输入参数)。
我的测试需要进行数据库查找。目前我已经为每个环境创建了一个DBContext。 Image of solution explorer
目前,我的测试负责创建正确的数据库上下文
像这样:
if (environment.ToLower().Equals("test")) {
var arkiv = new TransformContentCenter_TestEntities1();
var invoicesNotProcesseed = entries
.Where(row => !arkiv.Brevarkiv.Any(row1 => row1.ReferenceNumber.Equals(row.invoiceNo) && row1.LetterType=="Invoice")).ToList();
我知道这是糟糕的代码风格,我正在寻找一种方法来创建一个负责环境处理的数据库层。但我不知道哪种设置是处理这种情况的最佳实践,以及如何将其实现到我的解决方案中。非常感谢任何帮助:)
答案 0 :(得分:1)
您可以使用配置文件转换。请参阅https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx
你可以使用第三方插件(或类似http://gunnarpeipman.com/2013/11/using-web-config-transforms-with-app-config-files/之类的东西)来完成app.config的相同操作。
因此,您可以根据运行测试时可以查找的构建配置来转换键/值(如连接字符串)。