我正在重构一个 MVC 3 Web 应用程序,以不将数据模型直接传递给控制器,而是使用 View 模型(请参阅此处的灵感)。
目前,在填充模型列表时,我们在控制器中执行以下操作:
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;
}
有没有更好的方法让我想念?