首先,我要道歉,因为我觉得困扰你所有的愚蠢问题,但我真的有问题。
我想知道我是否可以更改C#安装数据库的路径(因为你们都知道你必须在解决方案资源管理器中单击添加然后转到服务数据库,因此数据库将自动创建到项目文件,我想改变这个自动位置)有什么方法可以做到吗?
其次,如果我无法更改自动添加数据库的路径,我想改变|DataDirectory|
行为的方式。我想更改它在project/bin/Debug
中运行数据库以自动将程序运行到项目文件中的选项。
答案 0 :(得分:1)
通常最好将内容保留为默认值。因此,您的连接字符串存储在app.config文件中(或web.config一个用于Web应用程序)。通过这种方式,可以在将应用程序部署到客户时轻松调整配置。
如果该路径存储在web.config或app.config中,并且您的应用程序在运行时读取它,那么您可以编辑(手动或使用设置工具)客户位置的路径以匹配其约束,程序将使用新配置。 DataDirectory替换字符串是缓解设置重新配置问题的折衷方案;如果您计划通过代码更改它,那么您将面临同样的问题,因为您仍然必须在某处阅读客户配置。
无论如何,更改由| DataDirectory |解析的位置从代码中可以很容易。
AppDomain.CurrentDomain.SetData("DataDirectory", your_path_to_a_data_folder);
顺便说一句,来自marc_s的建议非常好。如果安装了Sql Server Express(并且客户机上也需要它),则使用其管理工具(Sql Server Management Studio)将MDF文件添加到由Sql Server Express处理的数据库中。这为您提供了db的逻辑名称(不是具有更改路径的文件名),并且在连接字符串中使用了AttachDbFileName
键的逻辑名称INSTEAD
DataSource=.\SQLEXPRESS;Database=myDatabaseName; ....;
作为替代方案,如果您不需要从客户LAN上的许多PC拥有对数据库的共享访问权限,那么您可以查看Sql Server Express的LocalDB选项。此选项允许您不将Sql Server Express安装到客户PC,而是将数据库服务作为您自己的应用程序的本地dll启动。