代码之家  ›  专栏  ›  技术社区  ›  DanP

nhibernate和raw ado.net用法

  •  0
  • DanP  · 技术社区  · 14 年前

    背景:我正在一个ASP.NET MVC应用程序中使用nhibernate,视图模式中有一个打开的会话,我需要使用raw ado.net来执行一些性能关键的数据库操作。

    我对如何获取连接实例有些困惑,因为我在许多博客文章中看到了两种不同的方法。

    是否要使用:

    var connection = Session.Connection;
    

    或:

    var connection = ((ISessionFactoryImplementor)sessionFactory).ConnectionProvider.GetConnection();
    

    我似乎在任何地方都找不到一个确切的答案,我希望有丰富的NHiberinate经验的人能加入进来。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Diego Mijelshon    14 年前

    如果您已经有一个会话,请使用它的连接。

    这还允许您通过在事务上登记命令来共享事务(如果事务已打开)。

        2
  •  2
  •   Jaguar    14 年前

    我正在使用的行中的某些内容(还使用基础的已打开事务)

    SqlCommand command = new SqlCommand(updateString, (SqlConnection)NHibernateSession.Connection);
    command.Parameters.AddRange(parameters.ToArray());
    
    try
    {
        ITransaction tx = NHibernateSession.Transaction;
        tx.Enlist(command);
        command.ExecuteNonQuery();
    }
    catch (SqlException)
    {
        NHibernateSessionManager.Instance.RollbackTransaction();
        throw;
    }