Automapper を使用して SQL サーバーからいくつかのデータをビュー モデルに自動投影しようとしています。
私が持っているビューモデルは次のとおりです。
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()));
2 つのプロパティId
とは、クラスName
内で同じ名前を持っているため、自動投影されます。Workstation
このようないくつかのコードラインで発生する例外
var model = WorkstationsRepository.GetAll().Project()
.To<WorkstationViewModel>().SingleOrDefault();
いくつかの奇妙なobject reference is null
例外であり、スタック トレースの上部にいくつかのオートマッパーのCreateExpression<>
メソッドがあり、オートマッパーがそれを SQL コードに変換するための適切な式を生成できないという結論が得られます。
.Name
SQL テーブルから.Category.Name
の 1 項目検索などの単純なマップを使用すると、完全に機能します。必要なのは、Automapper を介してシーケンスを投影しながら、複数のアイテムにアクセスすることだけです。