zoukankan      html  css  js  c++  java
  • Nhibernate 对view 查询的几种方法

    第一种方法: 写view的类,写hbm.xml映射文件. 对无主键的view的查询要注意:你要用复合主键,不能随便指定一个有重复数据的列,不然你取n条数据时总会取到n条这个值的第一条数据. 要么你就改视图,让它有一个列是唯一主键.

    hbm.xml复合主键的写法

        <composite-id>
          <key-property name="OID" type="string"></key-property>
          <key-property name="Product" type="string"></key-property>
          <key-property name="SizeDesc" type="string"></key-property>
        </composite-id>

    用了复合主键之后view的类要重写兩个方法,不然会出現composite-id class must override Equals()的错误

            public override bool Equals(object obj)
            {
                 if (obj is GoodsInView)
                {
                    GoodsInView giv = obj as GoodsInView;
                    if (this.OID == giv.OID && this.Product == giv.Product && this.SizeDesc == giv.SizeDesc)
                        return true;
                    else
                        return false;
             
                }
                return false;
            }

            public override int GetHashCode()
            {
                return base.GetHashCode();
            }

    ---------------------------

    第2种方法

    只写view的类,不写hbm.xml文件

    用SQL查询,再转成List<T>

                string sql = "select * from GoodsInView";

                using (ISession session = NHibernateHelper.OpenSession())
                {
                    return ToList<GoodsInView>(
                        session.CreateSQLQuery(sql)
                        .List());
                }

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/1666045.html
Copyright © 2011-2022 走看看