Как изменить оператор обновления перед выполнением: Linq2Sql Classes - PullRequest
4 голосов
/ 10 октября 2011

Я реализовал отслеживание изменений (http://msdn.microsoft.com/en-us/library/cc280462.aspx) в некоторых таблицах, на которых я использую Linq2Sql.

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

DECLARE @originator_id varbinary(128);
SET @originator_id = CAST('SyncService' AS varbinary(128));
WITH CHANGE_TRACKING_CONTEXT (@originator_id) 
....generated statements....
....
....

Я знаю, что могу создавать хранимые процедуры и вручную отображать поля, но я хотел бы избежать этого, если это возможно.

Кто-нибудь знает способ переопределить и редактировать SQL на SubmitChanges ()

1 Ответ

1 голос
/ 05 ноября 2011

Вы можете переопределить метод Update, реализовав частичные классы в вашем текстовом тексте, которые вместо этого будет вызывать LINQ to SQL.Просто дайте ему подпись:

partial void UpdateClassName(ClassName instance)

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

ExecuteDynamicInsert(instance);

К сожалениюнет никакого механизма, чтобы просто вернуть намеченный SQL для вставки / обновления / удаления (вы можете получить операторы SELECT с помощью GetCommand для DataContext)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...