我試圖檢索存儲爲List的Property entitiy的所有記錄。 這個實體擁有照片集合,這個集合最多可以填充5個圖像。只從集合中獲取第一個元素
爲了減少加載時間,我想檢索屬性列表,並在每個屬性中只收集來自集合的第一張照片。 由於此查詢
List<Domain.Property> data = session.Query<Domain.Property>()
.Fetch(x => x.Photos.First())
.ToList();
給我這個錯誤。獲取請求必須是一個簡單的成員訪問表達式; '[100002]'是一個SubQueryExpression。參數名稱:relatedObjectSelector。
於是我就用
List<Domain.Property> data = session.Query<Domain.Property>()
.ToList();
我試着在列表和foreach循環來檢索屬性來訪問每個屬性和加載內nhib照片對象。這樣的會話
var a = PropertyViewModel.FromDomainModel(data, session);
public static List<PropertyViewModel> FromDomainModel(IList<Property> x, ISession session)
{
List<PropertyViewModel> dataVm = new List<PropertyViewModel>();
foreach (Property p in x)
{
Photo firstPhoto = session.Get<Photo>(p.Photos[0].Id);
dataVm.Add(new PropertyViewModel(p, firstPhoto));
}
return dataVm;
}
public PropertyViewModel(Property x, Photo y)
{
Id = x.Id;
...
Photo = new Photo();
Photo = y;
}
這種方法甚至看起來很好(至少對我來說:))它根據nhib加載。探查器65個實體(其中照片標識符是46個負載,以及屬性19標識符)。 (它應該爲每個屬性加載19個屬性標識和19個照片標識第一個圖像)。
我應該在這裏做什麼錯?
我不熟悉預測,所以它應該是最後的解決方案。
感謝
你可以嘗試'session.Query()獲取(X => x.Photos)。首先()ToList()' –
GregRos
#Greg無論如何,羅斯不會工作,謝謝。 – BobRock