1

我有一个交叉引用表 RolePrivilege,它具有对 Role 和 Privilege 表的 FK....基本上 Role 可以有很多 Privileges。

位于 Microsoft 修补程序的修补程序

已经申请了。

这是我的代码:

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

任何帮助,将不胜感激。

4

1 回答 1

1

大概(因为你没说)

  1. 桌子上有一个触发器。
  2. 您无法删除触发器。

如果您检查生成的 sql(设置DataContext.LogConsole.Out),您将看到一个输出子句。此子句的目的是将实例上的属性与数据库生成的值自动同步。

您需要做的是将每列的 AutoSync 属性设置为AutoSync.Never. 您可以通过 linq to sql 设计器执行此操作。

于 2010-10-15T15:02:35.790 回答