配置NHibernate的hibernate.cfg.xml文件中有更多的连接字符串(Configu

2019-09-17 01:02发布

我的客户要求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=...' />

Answer 1:

我能想到的解决此两种方式:

一个是将外部的* config文件NHibernate的配置,然后使用FileSystemWatcher类听了这个外部文件。 您可以动态地更改文件内容。

另一种方式是在同一时间有两个NHibernate的配置对象,然后注入其相应的Isession你的DAO / UnityOfWork /什么

如果这仅仅是用于开发/测试/生产数据库,我建议对阵双方。 最好是有三种不同的环境中,每个都有它自己的* config文件。



Answer 2:

更新:这是现在可以用的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