{
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文件就可以满足需求
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)