在应用程序配置中使用相对路径确定 SQL Express 数据库位置
在使用 SQL Express 数据库的 C# 单元测试项目中,有必要定义一个连接字符串,该字符串允许相对于应用程序位置的路径。这比显式指定数据库文件的绝对路径更可取,如:
AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf
最初考虑是否|DataDirectory|可以用于此目的。然而,我们发现这主要适用于 Web 应用程序,可能与控制应用程序配置文件中的数据库位置所需的配置设置不太一致。
为了克服这一挑战,实施了一种混合方法,如提供的解决方案中所述:
app.config file:
<add name="MyConnectionString" connectionString="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Database=MyDatabaseForTesting;Trusted_Connection=Yes;" />
单元测试类:
[TestInitialize] public void TestInitialize() { AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Databases")); // rest of initialize implementation ... }
此方法将连接字符串中的相对路径定义与 DataDirectory 的分配结合起来单元测试类中的属性,确保在单元测试期间数据库文件相对于应用程序的可执行文件定位,同时仍然允许在生产中使用托管 SQL 数据库环境。
以上是如何在 C# 单元测试中指定 SQL Express 数据库位置的相对路径?的详细内容。更多信息请关注PHP中文网其他相关文章!