我正在从linq查询填充我的viewmodels。我有一个方法来检索看起来像这样的计划列表
public static IEnumerable<PlanViewModel> GetPlans()
{
using (var context = new RepEntities())
{
var query = (from p in context.Plans.Include("StatusCommon")
join r in context.RealEstateDetails on p.ReId equals r.ReId
select new PlanViewModel
{
PlanName = p.PlanName,
...
LastUpdated = p.LastUpdated,
});
return query.ToList();
}
}
您看到省略号大约有30个其他属性。现在我想构建一个返回单个Plan的方法。该方法实际上是相同的,只是它将包含一个where子句来指定计划Id。我想重构这段代码,这样我就不会重复模型到ViewModel的映射。但是,我找不到允许我这样做的方法。任何人都可以提供任何关于如何正确编码的建议,以便这里没有那么多的重复?
提前致谢!
答案 0 :(得分:1)
使用反射来填充字段,或使用像AutoMapper这样的库。我绝对建议使用AutoMapper,它会让你的代码更清晰。
另一种可能性是使用implicit或explicit转换器。
这很大程度上取决于你想要代码的位置: