Linq,将记录插入交叉引用表,修复程序无法正常工作

时间:2010-10-14 18:59:46

标签: linq hotfix

我有一个交叉引用表RolePrivilege,它具有FK到角色和权限表....基本上角色可以有很多权限。

位于的Hotfix Microsoft hotfix

已经应用。

这是我的代码:

Public Sub InsertRolePrivilege(ByVal inrole As Role, ByVal inprivilege As Privilege)
        Dim r As Role = (From ro In DataConnect.dcGSFCommon.Roles Where ro.RoleId = inrole.RoleId).First

        Dim rolep As New RolePrivilege
        rolep.PrivilegeId = inprivilege.PrivilegeId
        rolep.CreatedBy = System.Threading.Thread.CurrentPrincipal.Identity.Name
        rolep.DateCreated = System.DateTime.Now()
        rolep.RolePrivilegeId = System.Guid.NewGuid()

        r.RolePrivileges.Add(rolep)

        DataConnect.dcGSFCommon.SubmitChanges()

    End Sub

执行最后一行时,出现以下错误: 如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'dbo.RolePrivilege'不能具有任何已启用的触发器。

该应用程序是一个Windows应用程序,其中2008 SQL服务器具有更新的修补程序,版本9.0.4035

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

据推测(因为你没说)

  1. 桌子上有一个触发器。
  2. 您无法移除触发器。
  3. 如果检查生成的sql(将DataContext.Log设置为Console.Out),您将看到一个输出子句。此子句的目的是使用数据库生成的值在实例上自动同步属性。

    您需要做的是将每列的AutoSync属性设置为AutoSync.Never。你可以通过linq to sql designer来做到这一点。