2009-08-26 59 views
1

我使用S#arp架构(使用NHibernate)。我有一些实体映射到一个数据库中的表,其他实体映射到不同的数据库。披露:数据库已经存在,所以我不能先做模型。S#arp架构/拥有多个数据库的NHibernate

如何配置此功能?

编辑:将Fluent NHibernate的SchemaIs方法作为将实体映射到不同数据库中的表的推荐方法?我相信通过NHib的xmp映射文件也是可能的。

回答

2

我这样做的方式是使用多个nhibernate配置文件在global.asax.cs中的InitializeNHibernateSession中初始化多个NHibernateSession。然后我在控制器中针对每个适当的操作方法使用了[Transaction(“nhibernate.dbname”)](dbname是分配给WebSessionStorages的名称)。

+0

难道您发布InitializeNHibernateSession方法的样本吗?谢谢。 – LordHits 2009-10-28 16:11:54

+0

这里你去... public override void Init() { base.Init(); webSessionStorage1 =新的WebSessionStorage(this,“nhibernate.db1”); webSessionStorage2 = new WebSessionStorage(this,“nhibernate.db2”); } ... 私人无效InitializeNHibernateSession(){ NHibernateSession.Init( webSessionStorage1, 新的String [] {使用Server.Mappath( “〜/斌/ MyProject.Data.dll”)}, 服务器.MapPath( “〜/ NHibernateDB1.config”)); NHibernateSession.Init( webSessionStorage2, 新的字符串[] {使用Server.Mappath( “〜/ bin中/ MyProject.Data.dll”)}, 使用Server.Mappath( “〜/ NHibernateDB2.config”)); } – Richard 2009-10-28 16:49:38

+1

如果一个控制器操作对两个数据库都起作用会怎么样? – Amitabh 2010-04-05 17:36:54