J'ai un dépôt:Choisir la bonne collection/Liste pour mon dépôt
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;
}
Je me demande s'il est préférable de retourner un IList ou IEnumerable (au lieu d'un ObservableCollection) de mon dépôt depuis mon viewmodel peut finir par le mettre dans une ObservableCollection ou List, selon mon besoin. Par exemple, je peux renvoyer des données du référentiel ci-dessus vers une liste de données ou une liste déroulante en lecture seule, ou je peux vouloir les mêmes données dans un DataGrid éditable.
Je pense (et je pourrais me tromper) que je veux que mon dépôt retourne une liste de barebones, puis la convertisse en suites dont j'ai besoin dans le viewmodel. Est-ce que ma pensée est correcte? Voici ce que je pensais:
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;
}
Merci.
Merci! Je vais devoir voir comment l'exécution différée affectera mon application. J'ai trouvé ce fil et j'ai besoin de le lire un peu mieux: http://stackoverflow.com/questions/1168944/how-to-tell-if-an-ienumerablet-is-subject-to-deferred-execution – steveareeno