データモデルをコントローラーに直接渡すのではなく、代わりにビューモデルを使用するように、MVC 3 Web アプリのリファクタリングに取り組んでいます (ここでインスピレーションを参照してください)。
現在、モデルのリストを作成するとき、コントローラーで次の行に沿って何かを行います。
var myQuery = from t in _db.TimeEntries
select t;
List<TimeEntry> timeEntryList = myQuery.ToList<TimeEntry>();
TimeEntries はデータベースにバインドされています。
しかし、今、私はこれを持つビューモデルを持っています:
public class TimeEntryViewModel
{
public TimeEntry entry {get; set;}
public Time time { get; private set; }
public TimeEntryViewModel();
public TimeEntryViewModel(int ID)
{
PraxisTime.Models.PraxisTimeDB _db = new PraxisTime.Models.PraxisTimeDB();
entry = _db.TimeEntries.Find(ID);
time = _db.Times.Find(entry.TimeID);
}
}
これらのリストを作成するまでは、これで問題ありません。これがビューモデルに追加された私のソリューションですが、ぎこちなく感じます。
public static List<TimeEntryViewModel> LoadTimeEntryViewModels(string userID)
{
theDB _db = new theDB();
List<int> myQuery = (from t in _db.TimeEntries
select t.ID).ToList<int>();
List<TimeEntryViewModel> timeEntryList = new List<TimeEntryViewModel>();
foreach (int i in myQuery)
{
timeEntryList.Add(new TimeEntryViewModel(i));
}
return timeEntryList;
}
私が行方不明になっているより良い方法はありますか?