есть способ узнать идентификатор столбца идентификации записи, вставленный через InsertOnSubmit
заранее, например. перед вызовом datasource SubmitChanges
?Ссылка на идентификатор объекта перед отправкой изменений в LINQ
Предположим, что я заполняю какую-то иерархию в базе данных, но я бы не хотел отправлять изменения для каждого рекурсивного вызова каждого дочернего узла (например, если бы у меня была таблица каталогов и таблица файлов и я воссоздал структуру своей файловой системы в базе данных).
Я хотел бы сделать это таким образом, чтобы я создать объект каталога, установить его имя и атрибуты, затем InsertOnSubmit
его в коллекцию DataContext.Directories, затем ссылка Directory.ID в его дочерних файлов. В настоящее время мне нужно вызвать InsertOnSubmit, чтобы вставить «каталог» в базу данных, а сопоставление базы данных заполняет его столбец идентификаторов. Но это создает много транзакций и доступа к базе данных, и я полагаю, что если бы я это вставлял в пакет, производительность была бы лучше.
Что бы я хотел сделать, так это использовать Directory.ID перед тем, как совершать изменения, заранее создать все мои объекты File и Directory, а затем сделать большой файл submit, который помещает все данные в базу данных. Я также открыт для решения этой проблемы с помощью хранимой процедуры, я предполагаю, что производительность будет еще лучше, если все операции будут выполняться непосредственно в базе данных.
спасибо, но я могу сгенерировать тысячи записей в одной партии и даже на несколько разных потоков, поэтому значения столбцов идентификатора будут смешиваться. Я думал об отключении автоматической генерации идентификаторов, но потом понял, что могу запустить сразу несколько таких запросов, и я не смог бы достоверно генерировать значения идентификаторов самостоятельно. – Axarydax
Да, я сначала вас не понял. Я думал, что вы просто говорите об одном объекте каталога за раз со многими файлами, но на самом деле вам нужно много каталогов и много файлов за раз. – ryanulit