Я использую LINQ для вставки записей в базу данных. Я создаю эти записи и отслеживаю их, используя список. Исходя из некоторой логики, я удаляю некоторые записи, удаляя их из списка. (Я использую тот же объект DataContext).
Когда я хочу вставить записи в базу данных, я выполняю функцию InsertOnSubmit () соответствующей таблицы linq, а затем SubmitChanges () для объекта datacontext. LINQ также вставляет удаленные записи из списка вместе с теми, которые присутствуют в списке.
пример:
//list to keep track of records to insert
List list
// add the records to list
list.add(some records)
//deleted last 2 records
list.remove()
//call InsertAllOnSubmit on the linq table passing the list object with records to insert
linqTable.InsertAllOnSubmit(list)
//call SubmitChanges on datacontext object
datacontext.SubmitChanges()
Я наткнулся на эту статью MSDN Состояния объектов и отслеживание изменений (LINQ to SQL)
Вы можете явно запросить вставки по
используя InsertOnSubmit. С другой стороны,
LINQ to SQL может выводить вставки по
поиск объектов, связанных с одним из
известные объекты, которые должны быть
обновлено. Например, если вы добавите
Неотслеживаемый объект
EntitySet (TEntity) или установить
EntityRef (TEntity) для неотслеживаемого
объект, вы делаете неотслеживаемый объект
достижимы с помощью отслеживаемых объектов в
график. Во время обработки
SubmitChanges, проходы LINQ to SQL
отслеживаемые объекты и обнаруживает любые
достижимые постоянные объекты, которые
не отслеживается. Такие объекты
кандидаты на включение в
базы данных.
Полагаю, вопрос сводится к следующему: как изменить состояние удаленных объектов на «Не отслежено»?
Я попытался DeleteOnSubmit после удаления объектов из списка, но это дает исключение (Невозможно удалить объект, который не был присоединен).
Может кто-нибудь, пожалуйста, указать мне на решение? Благодарю.
Я хотел бы знать, смогу ли я достичь этого, используя только LINQ. (Я знаю, что могу использовать сохраненный процесс и вставлять только записи в списке.)