配置NHibernate hibernate.cfg.xml文件以获得更多连接字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置NHibernate hibernate.cfg.xml文件以获得更多连接字符串相关的知识,希望对你有一定的参考价值。
我的客户询问是否可以从“CURRENT”数据库中的n#app切换到TEST数据库或DEV数据库。一次只能激活一个。在菜单文件中,她选择DEV或TEST数据库。
如何配置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=...' />
我可以想到两种解决方法:
一种是将NHibernate配置放在* .config文件之外,然后使用FileSystemWatcher类监听这个外部文件。您可以动态更改文件内容。
另一种方法是同时拥有两个NHibernate配置对象,然后将它的相应ISession注入到DAO / UnityOfWork /中
如果这只是dev / test / production数据库,我推荐两者兼顾。最好有三个不同的环境,每个环境都有自己的* .config文件。
这是我有时想要的功能。它永远不会出现,所以随着时间的推移,我创建了一个名为NHibernate X-Factories的扩展方法。您所要做的就是在一个.cfg.xml中创建多个session-factory元素并命名它们。然后,您可以在配置sessionFactory时按名称调用它们。
nhibernate.tsfg.hml
<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/查看更多信息。
以上是关于配置NHibernate hibernate.cfg.xml文件以获得更多连接字符串的主要内容,如果未能解决你的问题,请参考以下文章
NHibernate.Spatial 和 Sql 2008 地理类型 - 如何配置
在使用fluent-nhibernate配置nhibernate时,为什么会出现MissingMethodException?