Linq, вставка записи в таблицу перекрестных ссылок, исправление не работает - PullRequest
1 голос
/ 14 октября 2010

У меня есть таблица перекрестных ссылок RolePrivilege, в которой есть таблицы FK to Role и Privilege .... в основном Role может иметь много привилегий.

Исправление расположено в Исправление 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

При выполнении последней строки я получаю следующую ошибку: В целевой таблице «dbo.RolePrivilege» инструкции DML не может быть никаких включенных триггеров, если инструкция содержит предложение OUTPUT без предложения INTO.

Приложение представляет собой приложение для Windows с SQL Server 2008 с обновленным патчем, версия 9.0.4035

Любая помощь будет оценена.

1 Ответ

1 голос
/ 15 октября 2010

Предположительно (так как вы не сказали)

  1. На столе есть триггер.
  2. Вы не можете удалить триггер.

Если вы изучите сгенерированный sql (установите DataContext.Log на Console.Out), вы увидите предложение вывода. Цель этого пункта - автосинхронизировать свойства в ваших экземплярах с созданными в базе данных значениями.

Что вам нужно сделать, это установить для свойства AutoSync каждого столбца значение AutoSync.Never. Вы можете сделать это через конструктор linq to sql.

...