NHibernate를 처음 사용하고 NHibernate의 조건 엔진을 사용하여 일부 SQL을 표현하는 가장 좋은 방법을 찾지 못했습니다. 여기 개체 모델의 기본 묘사는 다음과 같습니다NHibernate 기준을 사용하여이 쿼리를 만드는 방법
public class Project : EntityBase<Project>
{
// Properties for a project
public virtual Company OwnerCompany { get; set; }
public virtual IList<UserAssignment> UserAssignments { get; set; }
}
public class Company : EntityBase<Company>
{
// Properties for a company
}
public class User : EntityBase<User>
{
// Properties for a user
public virtual Company Company { get; set; }
}
public class UserAssignment : EntityBase<UserAssignment>
{
// Properties for an assignment
public virtual User User { get; set; }
}
당신은 기본 테이블 모양을 클래스에서 추론 할 수있다, 모든 NH 물건이 EntityBase 추상 클래스입니다.
본질적으로 특정 회사가 소유하거나 해당 회사의 누군가를 위해 UserAssignments를 소유 한 모든 프로젝트를 가져 오려고합니다.는 여기에 내가 SQL에서 할 수있는 방법은 다음과 같습니다 나는 DetachedCriteria를 사용하고
select P.*
from Project P
where P.OwnerCompany_Id = @CompanyId
or P.Id in (
select Project_Id
from UserAssignment UA
join User U on UA.User_Id = U.Id
where U.Company_Id = @CompanyId
)
, 그리고 난 그냥 회사, 훨씬 덜 과제 모두와 소유자에게 UserAssignment의 사용자를 일치하는 동작하지 않습니다 . 나는이 시도하는 경우 :
var criteria = DetachedCriteria
.For<Project>()
.CreateCriteria("UserAssignments")
.Add(Expression.Eq("User.Company.Id", requestingUser.Company.Id));
나는 오류가 말을 얻을 "속성을 확인할 수 없습니다 :. TestProject.Domain.UserAssignment의 User.Company.Id을"
아무도 도와 줄 수 있습니까?