Надеюсь, вы можете мне помочь, я всю ночь чесал голову, пытаясь понять, где эта ошибка сохраняется.
Я пишу приложение для выставления счетов в winform.
У меня есть сетка на форме с источником данных, установленным на объект BindingList.
Давайте просто это примерно так:
BindingList<InvoiceLine> MyInvoiceLines = new BindingList<InvoiceLine> { };
Invoice MyInvoice = new Invoice();
И InvoiceLine, и Invoice являются объектами сущностей в моей модели.
Я добавляю линии в сетку с помощью:
MyInvoiceLines.Add(new InvoiceLine());
Я удаляю строки из сетки с помощью:
MyInvoiceLines.Remove(LineToBeRemoved);
Где LineToBeRemoved - это свойство, которое получает выбранную строку, когда при использовании требуется удалить строку и т. Д.
В конце концов, я хочу сохранить счет, поэтому я делаю это ...
foreach(var line in MyInvoiceLines)
{
MyInvoice.InvoiceLines.Add(line);
}
а затем вызывает SaveChange (). Однако строки, которые были удалены из InvoiceLines BindingList, также сохраняются ... Я чешу голову, пытаясь решить это, поскольку NO WHERE в моем коде от начала до конца ссылается на коллекцию InvoiceLines или была связана с контекстом данных объект перед этим методом, который в конечном итоге выполнит сохранение.
Это упрощенная версия моего кода, но я не могу избавиться от мысли, что я должен что-то концептуально ошибиться либо с BindingList, либо с объектом контекста данных. Для меня это действительно не очевидно, поскольку я новичок.
Любая помощь будет принята с благодарностью, а не после исправления, возможно, некоторые инструменты или методы, с помощью которых я могу дополнительно диагностировать эту проблему ...
Обновление: отсоединение элемента перед добавлением в BindingList, казалось бы, исправлено, но удаление объекта из объекта имеет странное поведение: / всем спасибо.
MyInvoiceLines.Remove(LineToBeRemoved)
работает иMyInvoiceLines
в вашем цикле foreach действительно больше не содержит удаленных элементов? - person Slauma   schedule 19.12.2011