GetChangeSet ChangeSet, Linq, в каком порядке будут применяться изменения? - PullRequest
0 голосов
/ 15 мая 2009

Я запускаю код, чтобы получить набор изменений непосредственно перед вызовом изменений 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 ]

0 голосов
/ 15 мая 2009

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

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

0 голосов
/ 15 мая 2009

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

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

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

EDIT

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

...