1
在完成SaveChanges()後無法獲取AFTER INSERT觸發器。使用帶有ExecuteStoreCommand()的T-SQL並沒有幫助。所有觸發器都在服務器上觸發,但不是來自實體框架。實體框架觸發器不會觸發
我在做什麼: 我創建父表中的新行:
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
而且我不能讓ŧ他增加了firebird generator生成的order.ORDER_ID,在SaveChanges()完成後它總是0。
我的數據庫模式是由FireBird數據庫生成的。
應用了StoreGeneratedPattern.Identity,現在order_id正在自行更新。不幸的是觸發器仍然不起作用。 –
你可以捕獲由EF執行的SQL嗎?它與執行觸發器的手動SQL有什麼不同? –
不能有權限查看DB服務器分析器,並且IntelliTrace未向我顯示任何ADO.NET調試跟蹤(我是EF中的新手)。無論如何,只是試圖通過使用官方的Firebird .NET提供商沒有EF來解決我的問題,該死的觸發器仍然無法正常工作。也許如果我找不到答案,我會將AFTER INSERT觸發器移動到BEFORE INSERT之前或手動更新我的字段。 –