理由

2016-12-22 7 views
0

はどのようのSaveChanges()DbContext方法で0戻り値の理由を見つけることができますか?理由

私は、データベーステーブルにレコードを追加しようと、のSaveChanges()メソッドだけレコードが追加、更新または削除されていない理由を見つけるためにどのような方法があります0

を返しますか?

+3

より多くのそれはあなたが私達にあなたのコードを表示しないとき言うのは難しい見つけます。 ただし、SaveChanges()はデータが変更されていない場合にのみ0を返します。 データを変更しなかったか、コードにエラーがあります。 – makzr

+0

okコードの一部を送信しますが、これは一般的な質問です@makz –

+0

一般的な質問はしていないので、一般的な回答は期待できません。 SaveChanges()は常に変更された行の数を返します。 0を返す場合は、何も変更しませんでした。 EFが一部のデータを変更すると思われる場合は、おそらくコードにエラーがあります。見つけ出す最良の方法は、コードをデバッグすることです。 – makzr

答えて

3

SaveChangesメソッドは、影響を受ける行の数を返します。しかし、ログを作成するには、DbContext.Database.Logプロパティを使用し、コードが正常であると仮定して、データベースに送信する内容を確認してください。

using (var context = new Context()) 
{ 
    context.Database.Log = Console.Write; 

    // your code 
} 

DbContext.Database.Logプロパティ文字列を受け取り、任意の方法のためのデリゲートに設定することができます。私たちは、データベースへの送信を見ることがとにかく良いです最も一般的には、そのTextWriterの「書き込み」メソッドに設定することで、どのTextWriterでも使用されます。現在のコンテキストによって生成されたすべてのSQLは、そのライターに記録されます。

ここでは、doc