读书人

请懂NHibernate的进!告诉小弟什么有关

发布时间: 2012-06-12 14:21:25 作者: rapoo

请懂NHibernate的进!,告诉小弟什么问题
//Record类
namespace Test.NHB {
public class Record { public virtual int ID { get; set; }
public virtual DateTime Time { get; set; }
public virtual Person person { get; set; }
public virtual Department department { get; set; }
}
}

//Record映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name ="Test.NHB.Record,Test.NHB" table ="Record" lazy ="true ">
<id name ="ID" column ="Record">
<generator class ="native"></generator>
</id>
<property name ="Time" column ="Time"></property>
<many-to-one name ="person" column="PersonID" cascade="all" fetch="join"></many-to-one>
</class>
</hibernate-mapping>
//Person类
namespace Test.NHB
{
public class Person
{ public virtual int PersonID { get; set; }
public virtual string Name { get; set; }
}
}

//person映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name ="Test.NHB.Person,Test.NHB" table ="Person">
<id name="PersonID">
<generator class ="native"></generator>
</id>
<property name ="Name" column="[Name]"></property>
</class>
</hibernate-mapping>

//根据ID可以查询
public IList<Record> GetRecordByID(int id) {
//Factory()];
session = Factory();
ICriteria c = session.CreateCriteria<Record>();
c.Add(Expression.Eq("person.PersonID", id));
return c.List <Record >();
}
//以下报错,但根据PersonId查询可以,根据姓名不可以
public IList<Record> GetRecordByName(string Name) {
session = Factory();
ICriteria c = session.CreateCriteria<Record>();
c.Add(Expression.Eq("person.Name", Name));
return c.List <Record>();
}

应该怎样改,请指点




[解决办法]

探讨

ICriteria c = session.CreateCriteria<Record>();
c.CreateCriteria<Person>().Add(Expression.Eq("Name", Name));
ICriteria c = session.CreateCriteria<Record>();

改成这样试试,你最好贴出错误信息。

[解决办法]
http://www.cnblogs.com/lyj/archive/2008/10/26/1319889.html
这里面有介绍,你那样写别说计算机不认识,nhibernate之父也不会认识

读书人网 >asp.net

热点推荐