我刚接触到流利的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; }
}
我在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"one_answers"adress"返回数据。但我希望结果集存储在自定义类中,在这里声明为"ProcResult"。
我得到以下错误:
System.IndexOutOfRangeException:未能在中找到指定的列结果:Address2_0_
谢谢,Saloni
我认为您不想将ID声明为标识列,因为它不是作为存储过程的一部分生成的。试着简单地将其定义为id列。
Id(x => x.ID).Column("ID");