sqlserver ce-配置文件中数据库文件的相对路径



我创建了一个WCF REST服务,该服务使用nhibernate连接到sql server compact edition数据库。因此,我将NHibernate数据源配置为:

<property name="connection.connection_string">Data Source=[Path]MyDb.sdf</property>

我现在遇到的烦恼是,我不知道如何避免在配置中写出绝对路径。这很烦人,因为我将数据库文件作为项目的一部分保存在App_Data文件夹中。因此,我不应该更新路径,例如,当我将项目部署到另一个位置时,即使绝对路径不同。

使用procmon,我注意到,如果我不在数据源配置中写一个绝对的pat,它将被解释为相对于路径:*C:\Program Files(x86)\Common Files\Microsoft Shared\DevServer\10.0*

有没有可能让nhibernate假设我们想将路径关联到应用程序bin文件夹(我的App_Data/MyDb.sdf就是在这里结束的)?

您应该使用:

Data Source=|DataDirectory|MyDb.sdf

|DataDirectory|指向App_Data文件夹。

是否有任何理由将NHibernate配置保存在XML文件中,而不是使用NHibernat配置接口以编程方式构建配置?

如果你有灵活性,我会这样做:

var path = // dynamically generate your path
var configuration = new Configuration();
configuration.SetProperty(Environment.ConnectionString, String.Format("Data Source={0};", path));
... // other configuration properties

你需要的所有课程都在NHibernate下。Cfg命名空间。还有Fluent NHibernate,它为构建配置提供了一个更干净的界面。

希望能有所帮助!

相关内容

  • 没有找到相关文章

最新更新