2011-10-10 79 views
4

我在一些使用Linq2Sql的表上實現了更改跟蹤(http://msdn.microsoft.com/zh-cn/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.... 
.... 
.... 

我知道我可以創建存儲過程和手動映射fiels但我想如果可能避免這種情況。

有沒有人知道一種方法來覆蓋和編輯SubmitChanges()上的SQL?

+1

祝您好運。我會很震驚地發現L2S是可擴展的,可以做到這一點。問題:你將如何使用ADO.NET DataAdapter來做到這一點?如果你能弄清楚,那麼你可能會弄清楚如何使用實體框架來做到這一點。 –

回答

1

您可以通過在您的datacontext上實現LINQ to SQL將調用的部分類來覆蓋Update方法。只要給它的簽名:

partial void UpdateClassName(ClassName instance)

您還可以通過什麼它通常不使用:

ExecuteDynamicInsert(instance);

不幸的是,沒有機制只是爲了獲得預期的SQL回插入/更新/刪除(您可以在DataContext上使用GetCommand獲取SELECT語句)