Триггер вставки SQL-сервера не срабатывает с использованием EFC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Триггер вставки SQL-сервера не срабатывает с использованием EF

Сообщение Гость »

У меня есть триггер Insert, который обрабатывает повторяющиеся попытки вставки ключа:

Код: Выделить всё

-- Create Tigger to not throw in case of duplicate mapping attempt

CREATE TRIGGER dbo.BlockDuplicates_Product_Category_Mapping
ON dbo.Product_Category_Mapping
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT 1 FROM inserted AS i
INNER JOIN dbo.Product_Category_Mapping AS p
ON i.ProductId = p.ProductId
AND i.CategoryId = p.CategoryId
)
BEGIN
INSERT dbo.Product_Category_Mapping(ProductId, CategoryId, IsFeaturedProduct, DisplayOrder)
SELECT ProductId, CategoryId, IsFeaturedProduct, DisplayOrder FROM inserted;
END
ELSE
BEGIN
PRINT 'Duplicate';
END
END
И он отлично работает, если я запускаю его непосредственно из своей СУБД:
[img]https: //i.stack.imgur.com/mMPy6.png[/img]

Но если я использую его в коде с EF: Похоже, это не работает, выдается исключение дублирующего ключа, чего я и пытался избежать:

Microsoft.EntityFrameworkCore.Relational: произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении. Основной поставщик данных Microsoft SqlClient: нарушение ограничения UNIQUE KEY «UQ_PCM_ProductId_CategoryId». Невозможно вставить дубликат ключа в объект «dbo.Product_Category_Mapping». Повторяющееся значение ключа: (920, 129).

Это значение вставляется через свойство навигации, если это имеет какое-либо значение.< /p>
Может ли кто-нибудь указать мне, почему это не работает?
Я ответил на эти два связанных вопроса, но не вижу ничего, что могло бы помочь:
Триггер вставки SQL Server 2008 не срабатывает
SQL Server 2008 — триггер вставки не срабатывает

Подробнее здесь: https://stackoverflow.com/questions/781 ... g-using-ef
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»