0
약간의 코드를 이해하는 데 어려움이 있습니다. 나는 Company and CompanyLocation이라는 2 개의 반을 가지고있다.NHibernate Criteria query building
public IList<CompanyLocation> GetCompanyLocations(string sortExpression)
{
ICriteria criteria = _session.CreateCriteria(typeof(CompanyLocation));
if (!string.IsNullOrEmpty(sortExpression))
{
Sort sort = new Sort(sortExpression);
if (!string.IsNullOrEmpty(sort.AssociationPath))
{
criteria.CreateCriteria(sort.AssociationPath).AddOrder(new Order(sort.SortColumn, sort.IsAscending));
}
// if (!string.IsNullOrEmpty(sort.AssociationPath))
// {
// criteria.CreateCriteria(sort.AssociationPath);
// }
// criteria.AddOrder(new Order(sort.SortColumn, sort.IsAscending));
}
return criteria.List<CompanyLocation>();
}
나는 메서드를 호출하고 "Company.CompanyName DESC"정렬 클래스의 sortExpression 전달 : 나는 다음과 같이 기준 쿼리를 사용하여 쿼리하기 위해 노력하고있어
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Core.DataTransfer.CompanyLocation,Core.DataTransfer" table="`CompanyLocation`" lazy="true">
<id name="CompanyLocationId" column="`CompanyLocationID`" type="int">
<generator class="native" />
</id>
<many-to-one name="Company" cascade="none" column="`CompanyID`" not-null="true" />
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Core.DataTransfer.Company,Core.DataTransfer" table="`Company`" lazy="true">
<id name="CompanyId" column="`CompanyID`" type="int">
<generator class="native" />
</id>
<property type="string" not-null="true" length="100" name="CompanyName" column="`CompanyName`" />
<bag name="CompanyLocations" inverse="true" lazy="true" cascade="all">
<key column="`CompanyID`" />
<one-to-many class="Core.DataTransfer.CompanyLocation,Core.DataTransfer" />
</bag>
</class>
</hibernate-mapping>
:로 매핑 그래서 그것을 구문 분석 다음
= false를 AssociationPath = "회사" SortColumn = "회사 명" IsAscending 경우 작품을 주석 처리하지 않는 방법의 블록. 주석 처리 된 것으로 변경하면 다음과 같이 실패합니다. 속성을 확인할 수 없습니다. CompanyName
이유를 이해하는 데 문제가 있습니다.