當我需要時,我明確加載了我的POCO上的關係,但自從我切換到AutoMapper後,我想我可以指示它爲我預加載關係,以便我的服務層代碼清潔:帶有顯式加載的AutoMapper和實體框架POCO
Mapper.CreateMap<Issue, IssueEditModel>().BeforeMap((i, m) =>
LoadProperties<Issue>(() =>
{ return kernel.GetService<IIssuesRepository>(); },
i, new Expression<Func<Issue, object>>[]
{
e => e.RelationshipA,
e => e.RelationshipB
}
)
);
的LoadProperties方法查找使用使用的ObjectContext的LoadProperty方法DependencyResolver和負荷關係上市資源庫。現在,我的服務可以輕鬆地映射EF POCO以通過單個Mapper.Map調用查看模型。
有沒有人試過這個?什麼是潛在的陷阱?將所有這些LoadProperty調用保留在服務/存儲庫層中並保持儘可能簡單的AutoMapper映射是否有意義?
讓我感到困擾的是,您可以讓AutoMapper爲您做很多繁瑣的工作,比如從視圖模型轉換爲POCO時轉換類型和通過ID查找實體,但同時這會將此「邏輯」從您的服務/存儲庫爲AutoMapper配置。如果您有豐富的經驗,請分享您的想法。
這可能有幫助,http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SteveCodeville+%28Steve+% 40 + Codeville%29它是一個獨立的根,我從來沒有真正理解爲什麼人們想做這麼多,什麼時候都可以爲你做 – davethecoder