の後にSubmitChanges()
ストアド プロシージャを実行すると、 が完了する前にストアド プロシージャが実行されますSubmitChanges()
。
この関数は、別のサーバーからデータを移行することになっています (そのため、多くの挿入が行われています)。まず、特定のテーブルのトリガーを無効にするストアド プロシージャを呼び出し、次に挿入を実行してから、トリガーを再度有効にします。
コードは次のようになります。
dc.DisableTriggers(); //Stored procedure (works fine)
//... Procedure to insert all the data in the DataContext
dc.MyClass.InsertOnSubmit(myClass);
//...
dc.SubmitChanges(); //All the data is inserted into tables.
dc.EnableTriggers(); //Stored procedure (triggers are enabled before the end of all inserts)).
ストアド プロシージャ:
//DisableTriggers
Disable trigger [triggerName] on tableName; //Disabling on 5 tables
//EnableTriggers
Enable trigger [triggerName] on tableName; //same tables as DisableTriggers
後でブレークポイントを設定しSubmitChanges()
、再起動する前に 1 秒待つと、すべて正常に動作します。
の後にタイマーを設定するSubmitChanges()
と、すべての挿入が終了する前にトリガーが有効になります。
いくつかのテストを行いSubmitChanges()
ましたが、ボタンとdc.EnableTriggers()
別のボタンをバインドすると、すべて正常に動作します。
残念ながら、すべて自動化する必要があります。
C# .net 4.0 を使用しています。