NHibernate2.0升级到3.0遇到的问题

来源:互联网 发布:淘宝拍下立减 编辑:程序博客网 时间:2024/06/04 00:24

今天将NHibernate升级到3.0后出现几个问题,解决它们颇费了一番功夫

问题1:升级后 ISessionFactoryImplementor 没有了OpenConnection方法,编译不通过

        public static DataSet ExecuteSQlQuery(string sSql)        {            ISessionFactoryImplementor factory = (ISessionFactoryImplementor)DBSessions.Factory;                SqlCommand cmd = new SqlCommand();            cmd.CommandText = sSql;            cmd.CommandType = System.Data.CommandType.Text;            SqlConnection conn = (SqlConnection)factory.OpenConnection();            cmd.Connection = conn;            SqlDataAdapter da = new SqlDataAdapter(cmd);            DataSet ds = new DataSet();            da.Fill(ds);            return ds;        }
        解决的方法为,将factory.OpenConnection(); 改成 factory.OpenSession().Connection; 即可

             也就是,如果需要使用ado.net connection 可以直接使用ISession实例的Connection属性,类型为IDbConnection

问题2:查询时出现Antlr.Runtime.NoViableAltException异常

下面代码执行时总是报 Antlr.Runtime.NoViableAltException 
       ISession session = DBSessions.GetSession();       string query="From Member Where id=1 ";       IList lst = session.CreateQuery(query);       【Member 类对应的表 BS_Members表】
找了很多资料,都说是HQL语法错误,但是上面的语句够简单了,怎么看也不像语法错误,况且别的表同样的调用方法都不会报错,
试过多种可能的方法,折腾的不轻,最后试着将Member类换个名字,比如Members,重新编译,查询,解决!!!

非常奇怪,NHibernate3.0竟让在HQL中拒绝 名称为Member的类,不管怎样总算解决了。


 
原创粉丝点击