триггеры структуры объекта не срабатывают - PullRequest
1 голос
/ 21 июля 2011

Невозможно заставить срабатывать триггер 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.

1 Ответ

0 голосов
/ 21 июля 2011

Если ваш ORDER_ID равен 0, это означает, что он не настроен для возврата из базы данных после вставки. Убедитесь, что ваше свойство ORDER_ID настроено с StoreGeneratedPattern.Identity.

Это также причина, по которой ваш триггер не работает. Запускается, но не существует ORDER_ID (0).

...