切换连接

时间:2016-11-07 11:55:25

标签: c# session nhibernate console-application

我们有服务作为控制台应用程序。有时间执行一些工作。有抽象方法DoJob。但是我们遇到了问题。一切都在一个数据库中,但在添加一个数据库之后,我们有一个工作需要其他数据库。这样做的最佳解决方案是什么?

BaseJob.cs

public virtual void Execute(IJobExecutionContext context)
{
    var session = NHibernateFactory.OpenSession();
    CurrentSessionContext.Bind(session);
    DoJob(context);     
    CurrentSessionContext.Unbind(
    SessionManager.Instance.SessionFactory);
    session.Close();               
}

protected abstract void DoJob(IJobExecutionContext context);

使用这个解决方案会不会很好?

protected override void DoJob(IJobExecutionContext context)
{
    CurrentSessionContext.Unbind(SessionManager.Instance.SessionFactory);
    SessionManager.CurrentSession.Close();
    var session = NHibernateFactory.OpenSession();
    session.Connection.ConnectionString = "somestring";
    CurrentSessionContext.Bind(session);
    // Do stuff
}

0 个答案:

没有答案