web-dev-qa-db-ja.com

Entity Framework-「エントリの更新中にエラーが発生しました。詳細については内部例外を参照してください」

問題があります。EFModel FirstとImの学習を始めたばかりで、しばらくの間1つのポイントにとどまります。私はそのようなエラーが発生しました:

「エントリの更新中にエラーが発生しました。詳細については内部例外を参照してください」

図に簡単なモデルを作成し、データベースを生成し、C#で簡単なコードを記述してテーブルに1行だけ追加しましたが、常にエラーが表示されます。

Diagram/Generated DLL/Simple Main/And error throwingでスクリーンショットを投稿します

model and stuff

より大きなサイズのリンク: http://i.imgur.com/bKGc4wv.png

10
CSharpBeginner

ターン Pluralization On。問題は、モデルオブジェクトが単数名(Pupil)規則を使用しているのに対し、データベースではPupilsで複数形の名前sを使用していることです。

[〜#〜] update [〜#〜]

この post は、オンまたはオフにする方法を示しています。その投稿の関連する抜粋:

複数形のオンとオフを切り替えるには

  • [ツール]メニューの[オプション]をクリックします。

  • [オプション]ダイアログボックスで、[データベースツール]を展開します。注:[データベースツール]ノードが表示されていない場合は、[すべての設定を表示]を選択します。

  • [O/Rデザイナー]をクリックします。

  • クラス名を変更しないようにO/Rデザイナーを設定するには、名前の複数形をEnabled = Falseに設定します。

  • 名前の複数形をEnabled = Trueに設定して、O/Rデザイナーに追加されたオブジェクトのクラス名に複数形規則を適用します。

更新2

ただし、複数形の名前は避けてください。 here 方法を読むことができます(リンクが壊れた場合に備えて、ここで引用します)。

(...)Entity Framework Code Firstアプローチを使用する場合、モデルクラスからデータベーステーブルを作成しています。通常、Entity Frameworkは複数の名前を持つテーブルを作成します。つまり、PhoneNumberというモデルクラスがある場合、Entity Frameworkはこのクラス用に「PhoneNumbers」というテーブルを作成します。複数の名前を避け、Customerのような単数の名前が必要な場合は、次のようにできます。DBContextクラスで、このような「OnModelCreating」メソッドをオーバーライドします(...)

enter image description here

(...)このメソッドをオーバーライドすると、複数の名前を持つテーブルの作成が回避されます。これで、「PhoneNumbers」ではなく「PhoneNumber」というテーブルが作成されます(...)

11
João Pinho

.netからsqlへのデータ変換の原因である可能性があります。たとえば、日時の変換エラー。

まったく正確なエラーではありません。 exception.InnerException.InnerException-> ResultViewでウォッチで正確なエラーを確認できます。

私にとっては、datetime列へのnull参照でした

7
FARHAD AFSAR

記録については、私はこの問題を抱えており、私の側では愚かな間違いでした。私の問題はデータ型の不一致でした。データベーステーブルとC#クラスのデータ型は同じでなければなりません......

1
user3882845

私の場合は、次の手順が解決されました。

「更新」に設定された列値がありました-編集(SQLキーワード以外)に置き換えられました列名の1つにスペースがありました(余分なスペースまたはトリムを削除しました)

0

私はEFのSaveChanges()について同じ問題を抱えていましたが、私の場合はsqlテーブルを更新するのを忘れて、移行を使用した後に問題が解決したので、テーブルを更新すると問題が解決する可能性があります。

0
Liam

私は同じ問題に直面していましたが、上記の解決策のどれも助けにはなりませんでした。私のWeb Api 2プロジェクト、実際にデータベースを更新し、unique constraint上のSQL table column.それが実際に問題を引き起こしていた。挿入する前に重複する列の値を確認するだけで問題を解決できました!

0
Jamshaid Kamran

私は同じエラーに直面しました:

「エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください」

単純に*。edmxファイルを削除して再作成。それは私のために働いた。エラーはなくなります

0
user688

私の問題は、テーブルのIDがAUTO_INCREMENTではなく、範囲を追加しようとしていたことです。

0
M Fouad Kajj

最近この問題がありました。これは、ユーザーデータベースのアクセス許可のために発生しました。ユーザーデータベースの権限を確認してください。おそらく、ユーザーはdbに書き込む権限を持っていません。

0
Edvan Souza