Ich bin neu in C# und .NET. Ich lerne ASP.NET MVC 5. Eine Sache, die ich selbst verbringen verbringen zusätzliche Zeit bei der Umwandlung eines Modells zu einem Viewmodel.Gibt es eine Verknüpfung, um ein Modell in ein Ansichtsmodell zu konvertieren?
Hier ist mein Modell
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; }
}
und hier ist meine Ansicht Modell
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;
}
}
, wie Sie beiden Modelle sehen und Ansichtsmodell sind identisch mit Ausnahme über Variable, die eine Berechnung ist.
Zu meiner Ansicht Modell bevölkern ich folgendes
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);
}
Die beiden Fragen haben, die ich mit meinem Ansatz sehe, dass
- ist, ich habe zu tun, viele zusätzliche Codierung insbesondere der Ansicht, Modell ist groß oder f Ich habe mehrere Variablen, die ich berechnen muss.
- Ich fühle, dass ich 1 zusätzliche Zeit Schleife um mein Modell in den Ansichtsmodus zu konvertieren.
Gibt es einen einfacheren Weg, dies in C# zu tun?
Gibt es einen besseren Ansatz für dieses Verfahren für eine große Anwendung? Mein Ziel ist es, den besseren Weg zu lernen, meine Codezeit optimal zu nutzen.
AutoMapper kann mit dem trivialen Mapping helfen. – user2864740
Beachten Sie, Automapper ist sehr langsam, wenn Sie eine große Menge von Daten tp-Prozess haben, denken Sie an eigene benutzerdefinierte Mapper [Link] http://StackOverflow.com/Questions/4131720/Automapper-Running-Extremely-Slow-on-Mapping -1400-records – Thakur