3

次の問題があります。

トリガーを使用して、Web サイトの統計を実行します。

私のコントローラーでは、次のコードを使用します。

 db.MyModel.Add(model);
 db.SaveChanges();

SQL Server Management Studio にレコードを挿入すると、トリガーがうまく機能します。しかし、Web サイトからレコードを挿入すると、トリガーが起動しません。

他のテーブルにも同様のトリガーがあり、それらはすべてうまく機能します。このテーブルだけが問題を引き起こす理由がわかりません。また、edmxファイルを削除して再度作成しようとしましたが、それでもうまくいきません。それを機能させるために私がしなければならないことはありますか?

Entity Framework 5、MVC4、Visual Studio 2012、MSSQL Server 2008 R2 を使用しています。

ありがとうございました。

更新 #1: Web サイトからレコードを挿入すると、新しいレコードはデータベースに保存されますが、トリガーは発生しません。プログラムはエラーを生成しません。

4

3 に答える 3

1

SQL ServerでUPDATEorINSERT INTOステートメントが発生すると、トリガーが起動します。あなたのコードは、書かれているように、実際にデータを変更していない限り、更新を直接実行しません。db.SaveChanges();

他の唯一の可能性は、トリガーが DML 操作の前に無効化され、後で有効化されることです。

于 2013-09-18T03:55:36.910 に答える
1

SQL Server データベースで Entity Framework を使用すると、同じ問題が発生しました。

データベースでトリガーを起動するには、「db.SaveChanges();」の後に「TransactionScope」を使用して「commit」を送信する必要があります。指図。

Entity Framework Core ライブラリを使用しています。次に例を示します。


using (var ts = new TransactionScope())
{
    using (var db = new DbContext()) // Modify to you Context Class
    {
        // Your logic code
            
        db.MyModel.Add(model);
        db.SaveChanges();
        
        // commit
        ts.Complete();
    }
}
于 2021-12-16T23:03:10.347 に答える