如何在nhibernate中同时连接多个数据库

如何在nhibernate中同时连接多个数据库,第1张

public interface ISessionFactoryHolder

{

ISessionFactory GetSessionFactoryForEntity<TEntity>() where TEntity : IEntity

}

public class SessionFactoryHolder : ISessionFactoryHolder

{

private IDictionary<string, int>entityDictionary

private IDictionary<int, ISessionFactory>factoryDictionary

public SessionFactoryHolder()

{

this.entityDictionary = new Dictionary<string, int>()

this.factoryDictionary = new Dictionary<int, ISessionFactory>()

}

#region ISessionFactoryHolder Members

public ISessionFactory GetSessionFactoryForEntity<TEntity>() where TEntity : IEntity

{

int hashCode = 0

Asserts.Assert<MappingException>(

this.EntityInDictionary(typeof(TEntity).FullName, out hashCode) == false

, string.Format("No persister for:{0}", typeof(TEntity).FullName))

return this.factoryDictionary[hashCode]

}

#endregion

public void RegisterSessionFactory(ISessionFactory sessionFactory)

{

Asserts.IsNotNull(sessionFactory, "sessionFactory")

this.factoryDictionary[sessionFactory.GetHashCode()] = sessionFactory

this.MapingEntityNameToSessionFactoryHashCode(sessionFactory.Statistics.EntityNames

, sessionFactory.GetHashCode())

}

private bool EntityInDictionary(string entityName, out int sessionFactoryHashCode)

{

return this.entityDictionary.TryGetValue(entityName, out sessionFactoryHashCode)

}

private void MapingEntityNameToSessionFactoryHashCode(string[] entityNames, int sessionFactoryHashCode)

{

foreach (var entityName in entityNames)

{

this.entityDictionary[entityName] = sessionFactoryHashCode

}

}

}

怎么在不同数据库之间进行同步数据

数据库A和数据库B是建立在两台独立的数据库服务器上,那么采用dblink方式是一种可行的方式,存在两个数据同步过程:

一、数据库A正常运行的时候需要将数据同步到备用库即数据库B;

二、数据库A不正常的时候启用数据库B,在数据库A恢复正常之前的数据更新都发生在数据库B,那么需要将数据库B的数据同步给数据库A。

第一种方式:前提是数据库A和数据库B本地网是24小时互通的同时对数据同步实时性有比较高的要求,那么可以建立DBLINK,在两个库都建触发器,不管当前在哪个库发生数据更新的时候实时同步数据到目标数据库;

sqlserver数据库连接放在配置文件中,只是针对外部程序访问sqlserver的场景,几种不同连接方式(odbc,ef,nhibernate,mybitas,等等),连接字符串也有所不同,你在网上搜一下,sqlserver连接字符串格式就知道了,配置文件的话,分2种,一种是建立项目时自带的config文件,这种文件的读写访问.net自己就有方法支持,文件格式和对应节点的说明也很详细;自己建立一个配置文件(可以是txt,xml等,格式可以自己控制,不过需要自己去编写相应的读写方法);

上面2种方式,各有优劣,第1种,使用系统自带的配置文件, *** 作方便,但是这个文件有个要注意的地方,就是它一般是在系统启动时去加载文件信息,在程序运行过程中,修改了配置文件的值,需要下次重启软件才会生效。

不过一般数据库连接字符串这种,在程序运行过程中,变化的几率小,直接用自带config文件就可以满足需求


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9790207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存