SaveChanges()が完了した後にAFTER INSERTトリガを起動できません。 ExecuteStoreCommand()でのT-SQLの使用は役に立ちません。すべてのトリガーはサーバー上で起動されますが、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
また、私はトンを取得することはできませんfirebirdジェネレータによって生成されたorder.ORDER_IDを増やしました。これはSaveChanges()が実行された後は常に0です。
My DBスキーマはFireBirdデータベースから生成されます。
StoreGeneratedPattern.Identityが適用され、order_idはそれ自身で更新されています。残念ながらトリガーはまだ動作しません。 –
EFで実行されたSQLをキャプチャできますか?トリガを実行するSQLとはどのように違いますか? –
DBサーバープロファイラを表示する権限がなく、IntelliTraceでADO.NETデバッグトレースが表示されませんでした(私はEFで初心者です)。とにかく、EFなしで公式のFirebird .NETプロバイダを使用して私の問題を克服しようとしましたが、気をつけるトリガーはまだ機能しません。おそらく私が答えを見つけられない場合、私は前のINSERTにトリガ後に移動するか、自分のフィールドを手動で更新します。 –