我試圖用Automapper將一些數據從SQL服務器自動投影到我的視圖模型中。通過Automapper將幾個序列自動投影到主ViewModel中
視圖模型我已經是:
public sealed class WorkstationViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string OccupiedByName { get; set; }
}
而且我嘗試使用的代碼是:
Mapper.CreateMap<Workstation, WorkstationViewModel>()
.ForMember(T => T.OccupiedByName, T => T.MapFrom(W =>
W.Sessions.AsQueryable().Select(E => E.StaffMember.Name).SingleOrDefault()));
兩個屬性Id
和Name
是自動投射,因爲他們具有相同的名稱在Workstation
類。
的例外,我得到了一些代碼行這樣
var model = WorkstationsRepository.GetAll().Project()
.To<WorkstationViewModel>().SingleOrDefault();
是一些奇怪的object reference is null
異常和堆棧跟蹤的頂部有一些automapper的CreateExpression<>
方法,這給了我一個結論,即automapper不能生成好的一個表達方式將其轉換爲SQL代碼。
當我使用簡單的地圖,如.Name
到.Category.Name
或SQL表中的其他單項檢索時,它可以很好地工作。我需要的只是通過Automapper投影序列時訪問多個項目。