您需要的是每个数据库一个 SessionFactory。因此,如果您有 2 个正在使用的数据库,那就是 2 个 SessionFactories - 每个数据库一个。uNHAddins 中的所有抽象实际上只是归结为 2 创建和管理这些 SessionFactories。
假设您正在使用 2 个数据库 -Database1
和Database2
. Database1
有那一张桌子 - C_SM_SEND
。Database2
有另一张桌子 - PC_TO_SM_PRIM_DATA
。构建代码的一种非常简单的方法是使用 2 个构建 SessionFactories 的类:
public class Database1
{
private ISessionFactory _sessionFactory;
public Database1SessionFactory()
{
//Build your session factory for Database1 here
//with the entity C_SM_SEND, connection string to Database1, etc, etc.
}
public ISession OpenSession()
{
return _sessionFactory.OpenSession();
}
}
public class Database2
{
private ISessionFactory _sessionFactory;
public Database1SessionFactory()
{
//Build your session factory for Database2 here
//with the entity PC_TO_SM_PRIM_DATA, connection string to Database2, etc, etc.
}
public ISession OpenSession()
{
return _sessionFactory.OpenSession();
}
}
您可以映射Database1
和Database2
使用您的 IoC。剩下的只是打开正确的会话并读取/写入您的实体。
可以通过以下方式跨两个数据库执行事务操作:
using (var tx = new TransactionScope())
{
//session1.Save(obj1);
//session2.Save(obj2);
tx.Complete();
}