GetChangeSet ChangeSet, Linq, в каком порядке будут применяться изменения?

Я выполняю код, чтобы получить набор изменений непосредственно перед вызовом изменений Linq Submit.

private void OnSubmitHandleReplication()
{
    System.Data.Linq.ChangeSet changes = GetChangeSet();
    //Do something with change set
}

В разделе "Что-то сделать" мне нужно знать, в каком порядке были отправлены вещи и в каком порядке они будут публиковать в базе данных. Я вижу, что набор изменений имеет.Inserted,.Updated и.Deleted. Я предполагаю, что они находятся в том порядке, в котором они будут применяться. Однако я хочу знать общий порядок. Я предполагаю, что это может быть вставка, обновление, затем еще 3 вставки или что-то, что включает в себя отскок назад и вперед между этими коллекциями.

Обновление 1

Извините, думал, что заголовок понятен, Linq to SQL

Обновление 2

Причина, по которой я это делаю, состоит в том, чтобы воспроизвести их позже в другой БД.

2 ответа

Это довольно сложно.

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

Что касается порядка вставки, обновления, удаления, вставки происходят перед удалением, поэтому вам нужно следить за уникальными ограничениями (что, вероятно, означает, что вам нужно обновить, а не пересоздать).

РЕДАКТИРОВАТЬ

Если вам просто нужно "повторить", вы наверняка можете использовать функцию регистрации.

Вы можете включить вход в Linq2SQL, установив YourDataContext.Log = Console.Out или к любому другому совместимому выходному потоку. Каждый SQL-запрос, который LINQ отправляет в базу данных, будет напечатан там. Вы должны использовать это только для отладки вашей проблемы, потому что LINQ отправляет довольно много запросов:)

Изменить: Что касается порядка действий, я не могу помочь вам больше, я никогда не смотрел на эти запросы больше, чем я должен был.

Другие вопросы по тегам