2010-07-06 3 views
1

У меня есть List<T>, связанный с datagrid, и я пытаюсь выяснить, как сохранить все изменения в базе данных (используя Entity Framework), а не только по одной строке за раз; ИЛИ, по крайней мере, лучший способ зафиксировать изменения из datagrid в базе данных. Я использую шаблон MVVM. Вот что у меня есть, насколько экономия на одну строку:Entity Framework CRUD-операции на datagrid

private static PROJECT_EXPENSEEntities _service; 

    //The default constructor 
    public ProjectExpenseItemsRepository() 
    { 
     if (_service == null) 
     { 
      _service = new PROJECT_EXPENSEEntities(); 
     } 
    } 

    public void AddProjectExpenseItems(int projectExpenseID) 
     { 
      project_expense_items p = new project_expense_items(); 
      if (entityList != null) 
      { 
       p.project_expense_id = projectExpenseID; 
       p.item_number = entityList.ItemNumber; 
       p.item_description = entityList.ItemDescription; 
       p.item_unit_price = entityList.ItemUnitPrice; 
       p.item_qty = entityList.ItemQty; 
       p.supplier_name = entityList.SupplierName; 
       p.create_date = System.DateTime.Today; 
       _service.AddObject("project_expense_items", p); 
       _service.SaveChanges(); 
      } 
     } 

Однако, я бы предпочел, чтобы отправить изменения всех строк в DataGrid сразу:

public void AddProjectExpenseItems(List<ProjectExpenseItemsBO> entityList, int projectExpenseID) 
    { 
     project_expense_items p = new project_expense_items(); 
     if (entityList != null) 
     { 
// not sure what goes here, do I need a loop for each item in the list? 
// I have a feeling I am going in the wrong direction with this... 

      _service.AddObject("project_expense_items", entityList); 
      _service.SaveChanges(); 
     } 
    } 

Я не нашел много хороших примеров в Интернете. Если бы кто-нибудь мог указать мне на пример, я был бы признателен.

+0

Если вы используете RIA есть простой способ сделать эту вещь. Просто вызовите SubmitChanges класса DomainContext. –

ответ

0

Да. Вы можете просто прокрутить список и SaveChanges один раз после добавления/изменения/удаления элементов.

Конечно, вы, вероятно, захотите загрузить и отобразить элементы из базы данных, поэтому привязка непосредственно к EntityCollection<project_expense_items> _service.project_expense_items будет более эффективной, чем использование списка отдельных объектов. Entity Framework отслеживает изменения для вас.

Смотреть это: http://msdn.microsoft.com/en-us/library/bb896269.aspx

Смежные вопросы