如何在执行前更改update语句:Linq2Sql类

时间:2011-10-10 02:41:00

标签: linq-to-sql

我在一些使用Linq2Sql的表上实现了Change Tracking(http://msdn.microsoft.com/en-us/library/cc280462.aspx)。

作为其中的一部分,我需要将以下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 个答案:

答案 0 :(得分:1)

您可以通过在您的datacontext上实现LINQ to SQL将调用的部分类来覆盖Update方法。请给它签名:

partial void UpdateClassName(ClassName instance)

您还可以使用以下方式传递给正常情况:

ExecuteDynamicInsert(instance);

不幸的是,没有任何机制只是为了插入/更新/删除而获得预期的SQL(您可以在DataContext上使用GetCommand获取SELECT语句)