В базе данных у меня есть таблица под названием SERVICE. Для этой таблицы у меня есть триггеры после INSER / UPDATE / DELETE. Когда я пытаюсь вставить запись в базу данных с помощью EF, я получаю сообщение об ошибке «Элемент с идентификатором« component_type_name »не существует в коллекции метаданных. \ R \ nParameter name: identity» . Столбец 'component_type_name' не существует в таблице SERVICE, но в таблице COMPONENT_TYPES_IN_SERVICE.
Это триггер вставки для таблицы SERVICE. Когда я удаляю триггер из таблицы, у меня не возникает проблем со вставкой.
CREATE TRIGGER [dbo].[UpdateComponentTypesInServiceOnInsert]
ON [dbo].[SERVICE]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @componentID int;
SET @componentID = 0;
DECLARE @ComponentTypeID int;
SET @ComponentTypeID = 0;
DECLARE @ComponentTypeName nvarchar(255);
SET @ComponentTypeName = null;
SELECT @componentID = component_id from inserted;
SELECT @ComponentTypeID = c.component_type_id, @ComponentTypeName = ct.description from COMPONENTS c
inner join dbo.COMPONENT_TYPES ct on c.component_type_id = ct.id
WHERE c.id = @componentID;
Select * from COMPONENT_TYPES_IN_SERVICE cts
where cts.id = @ComponentTypeID;
IF (@@ROWCOUNT > 0)
BEGIN
UPDATE COMPONENT_TYPES_IN_SERVICE
SET number_of_components = number_of_components + 1
WHERE id = @ComponentTypeID;
END
ELSE
BEGIN
INSERT INTO COMPONENT_TYPES_IN_SERVICE(id, component_type_name, number_of_components)
VALUES (@ComponentTypeID, @ComponentTypeName, 1);
END
END
Кто-нибудь знает какое-нибудь решение ???