【发布时间】:2016-09-12 21:00:16
【问题描述】:
我是 C# 和 .NET 的新手。我正在学习 ASP.NET MVC 5。我发现自己花了额外的时间将模型转换为视图模型。
这是我的模型
public class Overview
{
public string chain_name { get; set; }
public int store_id { get; set; }
public int total_attempts { get; set; }
public int total_unique_number_called { get; set; }
public int total_callable { get; set; }
public int total_completed_interviews { get; set; }
}
这是我的视图模型
public class OverviewViewModel
{
public string chain_name { get; set; }
public int store_id { get; set; }
public int total_attempts { get; set; }
public int total_unique_number_called { get; set; }
public int total_callable { get; set; }
public int total_completed_interviews { get; set; }
public decimal? unique_number_per_complete { get; set; }
public OverviewViewModel()
{
unique_number_per_complete = 0;
}
}
正如您所见,Model 和 ViewModel 是相同的,除了 over variable 是一个计算。
要填充我的视图模型,我执行以下操作
var records = conn.Database.SqlQuery<Overview>(query).ToList();
var overView = new List<OverviewViewModel>();
foreach(var record in records){
var newRecord = new OverviewViewModel();
newRecord.store_id = record.store_id;
newRecord.chain_name = record.chain_name;
newRecord.total_attempts = record.total_attempts;
newRecord.total_callable = record.total_callable;
newRecord.total_completed_interviews = record.total_completed_interviews;
if (record.total_completed_interviews > 0) {
newRecord.total_unique_number_called = record.total_unique_number_called / record.total_completed_interviews;
}
overView.Add(newRecord);
}
我在我的方法中看到的两个问题是
- 我必须做很多额外的编码,尤其是视图模型很大或者我有多个变量需要计算。
- 我觉得我要多循环 1 次才能将模型转换为查看模式。
在 c# 中有更简单的方法吗?
对于大型应用程序,此过程是否有更好的方法?我的目标是学习更好的方法来充分利用我的代码时间。
【问题讨论】:
-
AutoMapper 可以帮助进行简单的映射。
-
请注意,Automapper 非常慢,如果您有大量数据 tp 处理,请考虑自己的自定义映射器 [link]stackoverflow.com/questions/4131720/…
标签: c# asp.net .net asp.net-mvc asp.net-mvc-5