웹 사이트의 최상위 메뉴를 나타내는 MenuObject 클래스가 있습니다.Nhibernate - 객체의 부분로드
public class MenuObject
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual List<MenuObject> Children { get; set; }
}
매핑은 능통 자 NHibernate에서 Not.LazyLoad()의 정의를 사용하여 객체 간절히 아이를로드하도록 구성되었다 :
이 개체는 다른 특성 사이 다음 갖는다.
나는 지금은 이동 경로 컨트롤과 sidemenu 제어를 채우는 데 이러한 개체를 사용하려면 문제가있다 - 이러한 컨트롤을 위해, 내가 필요로하는 모든입니다
- 의 ID 및 제목 속성
- Children 컬렉션 (위의 두 속성 만 포함)
각 주 개체의 모든 속성과 각 자식 개체의 모든 속성을 과도한 부담으로로드하지 않으려합니다.
Nhibernate Linq를 사용하여 주 개체의 속성 만 다시 가져 왔지만 하위 개체에 대해 동일한 작업을 수행하도록 쿼리를 수정하려면 어떻게해야합니까? (???)
return (from mnu in session.Query<MenuObject>()
(select new MenuObject()
{
Id = mnu.Id
Title = mnu.Title,
Children = ???
}
---------------- 편집 -------------------- -
나는이 일을하고 있지만 where 절이 없습니다. 관계에 관계없이 모든 MenuObject 인스턴스의 목록에 'Children'을 설정하고 있습니다. 분명히 합법적 인 하위 객체를 추가하기를 원합니다. 각 부모 객체 - 아무도 도와 줄 수 있습니까? 감사합니다
from menuobject in session
.Query<MenuObject>()
where menuobject.Level == level
select new MenuObject()
{
Title = menuobject.Title,
Url = menuobject.Url,
Children = session.CreateCriteria<MenuObject>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("Title"), "Title")
.Add(Projections.Property("Url"), "Url"))
.SetResultTransformer(Transformers.AliasToBean(typeof (MenuObject)))
.List<MenuObject>()
}
.ToList();
덕분에 - '어린이'실제로 목록입니다 - -하지만 당신의 대답은 내 객체의 단일 인스턴스에 속성 '어린이'를 설정하는 표시이 시도했지만 운이 –
user1162591
와 내가 냈어요 위와 같이 끝내지 만 자식 객체를 필터링하는 데 도움이 필요합니다. – user1162591
답변과 팁을 보내 주셔서 감사합니다. ViewModels를 사용하는 예가 있습니까? – user1162591