0
람다 식의 "속성을 확인할 수 없습니다"이들은 내가 선택하려고 해요 클래스입니다유창함 NHibernate에 내가 유창함 NHibernate에 만 규칙에 의해 매핑을 사용하고
가//The attributes are used in my conventions
[Table("Entries")]
public class Entry
{
[Id] public virtual int EntryID { get; set; }
[Join("UserID", Join.Left)] public virtual User User { get; set; }
}
[Table("Users")]
public class User
{
[Id] public virtual int UserID { get; set; }
public virtual string Name { get; set; }
}
내 선택 기능이입니다 :
public IList<T> GetBy<T>(Expression<Func<T, bool>> expression) where T : class
{
ISession session = _dal.GetSession(typeof(T));
ICriteria criteria = session.CreateCriteria<T>();
//Error: could not resolve property "User.Name"
criteria.Add(Restrictions.Where<T>(expression));
return criteria.List<T>();
}
그리고 나는이 표현에 전화 해요 :
는IList<Entry> entries = Repository.GetBy<Entry>(e => e.User.Name == "Myself");
위의 코드는 특급 작동 ressions '멤버가 루트 클래스에 속해 있지만 클래스 속성 중 하나를 포함하지 않는 경우에는 내 질문에 어쨌든 간단한 방법으로 작업 위의 코드를 수행 할 수 있습니까? (직접 표현식을 분석 할 필요없이).
u.Name == "Myself"를 수행 할 수 있도록 "User"의 투영을 만들어야합니다. 기준은 두 번째 수준의 간접 참조 (e.User.Name)를 해결하지 못한다는 것을 기억합니다. –