我的客户要求posibility从C#应用程序从“当前”数据库切换到测试数据库或DEV数据库。 只有一个可以同时启动。 在菜单文件,她选择DEV或测试数据库。
如何配置hibernate.cfg.xml文件中有更多的连接字符串喜欢的app.config。
<name="CURRENT" connectionString='User Id=u1;Data Source=CURRENT;Password=...' />
<name="DEV" connectionString='User Id=u1;Data Source=DEV;Password=...' />
<name="TEST" connectionString='User Id=u1;Data Source=TEST;Password=...' />
我能想到的解决此两种方式:
一个是将外部的* config文件NHibernate的配置,然后使用FileSystemWatcher类听了这个外部文件。 您可以动态地更改文件内容。
另一种方式是在同一时间有两个NHibernate的配置对象,然后注入其相应的Isession你的DAO / UnityOfWork /什么
如果这仅仅是用于开发/测试/生产数据库,我建议对阵双方。 最好是有三种不同的环境中,每个都有它自己的* config文件。
更新:这是现在可以用的NuGet和GitHub上
这是我想了一段时间的特点。 它没有来,等过段时间,我创建了一个叫做NHibernate的X-工厂的扩展方法。 所有你需要做的就是在一个.cfg.xml创建多个会话工厂元素,并将它们命名。 然后,你可以通过名字,当你配置SessionFactory给他们打电话。
nhibernate.cfg.xml
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2-x-factories">
<session-factory name="Development">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=dsql01;DataBase=dbDev;uid=nhDeveloper;pwd=pass1234</property>
<property name="show_sql">true</property>
<mapping assembly="DataLayer" />
</session-factory>
<session-factory name="Production">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=psql02;DataBase=dbDev;uid=nhDeveloper;pwd=pass5678</property>
<property name="show_sql">false</property>
<mapping assembly="DataLayer" />
</session-factory>
</hibernate-configuration>
C#
NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();
config.Configure("~/nhibernate.cfg.xml", "Development").BuildSessionFactory();
多见于https://www.github.com/roydukkey/NHibernate-X-Factories/ 。
文章来源: Configure NHibernate hibernate.cfg.xml file to have more connection strings