Невозможно заставить срабатывать триггер AFTER INSERT после выполнения SaveChanges (). Использование T-SQL с ExecuteStoreCommand () не помогает. Все триггеры запускаются на сервере, но не из Entity Framework.
Что я делаю:
Я создаю новую строку в родительской таблице:
ORDERS order = new ORDERS
{
GUID = Guid.NewGuid().ToString(),
ORDERDATE = DateTime.Now,
};
DB.AddToORDERS(order);
DB.SaveChanges();
И, наконец, я помещаю некоторые данные в дочернюю таблицу, где триггер должен быть запущен после вставки:
foreach (SPAREPART item in SOMECOLLECTION)
{
ORDERITEMS orderitem = new ORDERITEMS
{
ORDER_ID = order.ORDER_ID, //here order.ORDER_ID is 0, but why?
PRICE = item.INCOME_PRICE
};
DB.ORDERITEMS.AddObject(orderitem);
DB.SaveChanges();
}
Триггер просто обновляет родительскую таблицу:
AS
begin
UPDATE ORDERS o SET o.sum = o.sum + NEW.price WHERE o.order_id = NEW.order_id;
end
Также я не могу получить увеличенный порядок. ORDER_ID, сгенерированный генератором firebird, он всегда равен 0 после выполнения SaveChanges ().
Моя схема БД генерируется из базы данных FireBird.