У меня есть репозиторий:Выбор правильного сбора/Список для моего репозитория
public ObservableCollection<ProjectExpenseBO> GetProjectExpenses()
{
//Get by query
IQueryable<ProjectExpenseBO> projectExpenseQuery =
from p in _service.project_expense
from e in _service.vw_employee
where p.employee_id == e.employee_id
select new ProjectExpenseBO()
{
ProjectExpenseID = p.project_expense_id
, EmployeeID = p.employee_id
, ProjectNumber = p.project_number
, PurchaseTypeID = p.purchase_type_id
, BuyerEmployeeID = p.buyer_employee_id
, PurchaseOrderNumber = p.purchase_order_number
, DeliveryDate = p.delivery_date
, EmployeeName = e.first_name + " " + e.last_name
};
ObservableCollection<ProjectExpenseBO> projectExpenseCollection = new ObservableCollection<ProjectExpenseBO>(projectExpenseQuery);
return projectExpenseCollection;
}
мне интересно, если это лучше возвращать IList или IEnumerable (вместо ObservableCollection) из моего репозитория, так как мой ViewModel может в конечном итоге вставьте его в ObservableCollection или List, в зависимости от моей потребности. Например, я могу вернуть данные из репозитория выше в список данных или раскрывающийся список только для чтения, или мне могут понадобиться те же данные в редактируемом datagrid.
Я думаю (и может быть неправильно), что я хочу, чтобы мой репозиторий возвращал список barebones, а затем конвертировал его в какие-то объекты, которые мне нужны в viewmodel. Правильно ли я считаю? Вот что я подумал:
public IEnumerable<ProjectExpenseBO> GetProjectExpenses()
{
//Get by query
IQueryable<ProjectExpenseBO> projectExpenseQuery =
from p in _service.project_expense
from e in _service.vw_employee
where p.employee_id == e.employee_id
select new ProjectExpenseBO()
{
ProjectExpenseID = p.project_expense_id
, EmployeeID = p.employee_id
, ProjectNumber = p.project_number
, PurchaseTypeID = p.purchase_type_id
, BuyerEmployeeID = p.buyer_employee_id
, PurchaseOrderNumber = p.purchase_order_number
, DeliveryDate = p.delivery_date
, EmployeeName = e.first_name + " " + e.last_name
};
return projectExpenseQuery;
}
Спасибо.
Спасибо! Мне нужно будет увидеть, как отложенное исполнение повлияет на мое приложение. Я нашел эту тему и вам нужно ее немного почитать: http://stackoverflow.com/questions/1168944/how-to-tell-if-an-ienumerablet-is-subject-to-deferred-execution – steveareeno