繁体   English   中英

System.IndexOutOfRangeException:使用n-hibernate在结果中找不到指定的列

[英]System.IndexOutOfRangeException: Could not find specified column in results using n-hibernate

我是流利的n休眠新手。

我正在使用流畅的nHibernate连接到我的应用程序中的MYSQL数据库。 结果集的Mapping类声明如下:

public class ProcResult
    {
        public virtual int ID { get; set; }
        public virtual string Name { get; set; }
        public virtual string Price { get; set; }
        public virtual int AddressID { get; set; }

        public virtual string Address { get; set; }
        public virtual string Pincode { get; set; }

    }

我在MY SQL中创建了一个例程(过程),如下所示:

CREATE DEFINER=`root`@`localhost` PROCEDURE `testProc`()
BEGIN
    select  a.ID, a.Name, a.Price, a.AddressID, b.Address, b.Pincode from expediads a join adresses b on a.addressid=b.id;
END

用于例程(存储过程)的hbm.xml文件是:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TestHBN">  
  <sql-query name="testProc">
    <return alias="PR" class="TestHBN.Models.ProcResult, TestHBN">
      <return-property name="ID" column="ID"/>
      <return-property name="Name" column="Name" />
      <return-property name="Price" column="Price" />
      <return-property name="AddressID" column="AddressID" />
      <return-property  name="address" column="address" />
      <return-property  name="pincode" column="pincode" />
    </return>
    Call testProc;
  </sql-query>
</hibernate-mapping>

这也是结果集类的映射:

public class ProcResultMap : ClassMap<ProcResult>
{
    public ProcResultMap()
    {

        Id(x => x.ID).GeneratedBy.Identity().Column("ID");
        Map(x => x.Name).Column("Name");
        Map(x => x.Price).Column("Price");
        Map(x => x.AddressID).Column("AddressID");
        Map(x => x.Address).Column("Address");
        Map(x => x.Pincode).Column("Pincode");
    }
}

该存储过程从两个表“ expediads”和“ adresses”返回数据。 但是我希望结果集存储在此处声明为“ ProcResult”的自定义类中。

我收到以下错误:

System.IndexOutOfRangeException:在结果中找不到指定的列:Address2_0_

谢谢,Saloni

我不认为您想将ID声明为标识列,因为它不是作为存储过程的一部分生成的。 尝试简单地将其定义为id列。

      Id(x => x.ID).Column("ID");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM