2010-10-29 3 views
1

У меня есть страница, вроде Order-Order lines. Заказ представляет некоторые текстовые поля и ddls, строки заказа представляют GridView.EF4 - Добавить объект в objectcontext без savechanges

Я хочу, чтобы пользователи добавляли строки заказов без сохранения изменений в базе данных. Например: он добавляет 4 строки заказа, заполняет информацию о заказе и затем нажимает кнопку «Сохранить». Только в тот момент вся информация должна быть сохранена в БД.

Когда я использую такой код

using (Entities ctx = new Entities()) 
{ 
//create new OrderLine 
OrderLine ol = OrderLine.CreateOrderLine(1, 1, "", 1); 
//add OrderLine to OrderLines collection 
ctx.CreateOrderLines.AddObject(ol); 
} 

вновь созданный OrderLine не появляется в моем контексте объекта, поэтому я не могу получить к нему доступ и связать GridView новой коллекции OrderList.

Как я могу решить эту проблему? Или, может быть, есть еще один способ выполнить эту задачу?

Спасибо.

ответ

0

Вы можете попытаться отсоединить объект Order и работать с ним, пока не будете готовы сохранить его обратно в базу данных.

+0

Нет проблем с отсоединением. Проблема в GridView. Как я должен работать с ним, когда мне нужно добавлять, удалять и обновлять строки в нем, но без мгновенного сохранения. Все данные должны быть сохранены в базе данных в конце, когда нажата кнопка сохранения. – Smile

+0

Я сделал что-то похожее на это, создав меньшую версию объектов (только с теми свойствами, которые мне нужны) и сохранил их в сеансе. Вы не хотите хранить все данные GridView в сеансе, но, возможно, легкий объект. Затем, когда пользователь совершает транзакции, вы можете скопировать значения в свой ObjectContext и применить изменения. – dotariel

+0

Я не могу понять, как мне работать в этой ситуации с GridView. Пользователи должны увидеть, что добавленная строка добавляется также в Grid. Представьте: пользователь добавляет 4 строки из моей формы => есть 4 postbacks => 4 новых строки, добавленных в GridView. Но в этот момент данные не сохраняются в БД. Чем пользователь удаляет 1 строку из этого 4 => 1 postbask => 1 строка была удалена из GridView (все еще 3 там). Все еще не сохранены данные. Теперь пользователь решил отредактировать 1 строку => снова 1 postback => 1 строка, обновленная в GridView. И, наконец, пользователь нажимает кнопку сохранения и все измененные/созданные данные сохраняются в БД. – Smile

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