問題があります。EFModel FirstとImの学習を始めたばかりで、しばらくの間1つのポイントにとどまります。私はそのようなエラーが発生しました:
「エントリの更新中にエラーが発生しました。詳細については内部例外を参照してください」
図に簡単なモデルを作成し、データベースを生成し、C#で簡単なコードを記述してテーブルに1行だけ追加しましたが、常にエラーが表示されます。
Diagram/Generated DLL/Simple Main/And error throwingでスクリーンショットを投稿します
より大きなサイズのリンク: http://i.imgur.com/bKGc4wv.png
ターン 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」メソッドをオーバーライドします(...)
(...)このメソッドをオーバーライドすると、複数の名前を持つテーブルの作成が回避されます。これで、「PhoneNumbers」ではなく「PhoneNumber」というテーブルが作成されます(...)
.netからsqlへのデータ変換の原因である可能性があります。たとえば、日時の変換エラー。
まったく正確なエラーではありません。 exception.InnerException.InnerException-> ResultViewでウォッチで正確なエラーを確認できます。
私にとっては、datetime列へのnull参照でした
記録については、私はこの問題を抱えており、私の側では愚かな間違いでした。私の問題はデータ型の不一致でした。データベーステーブルとC#クラスのデータ型は同じでなければなりません......
私の場合は、次の手順が解決されました。
「更新」に設定された列値がありました-編集(SQLキーワード以外)に置き換えられました列名の1つにスペースがありました(余分なスペースまたはトリムを削除しました)
私はEFのSaveChanges()について同じ問題を抱えていましたが、私の場合はsqlテーブルを更新するのを忘れて、移行を使用した後に問題が解決したので、テーブルを更新すると問題が解決する可能性があります。
私は同じ問題に直面していましたが、上記の解決策のどれも助けにはなりませんでした。私のWeb Api 2
プロジェクト、実際にデータベースを更新し、unique constraint
上のSQL table column.
それが実際に問題を引き起こしていた。挿入する前に重複する列の値を確認するだけで問題を解決できました!
私は同じエラーに直面しました:
「エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください」
単純に*。edmxファイルを削除して再作成。それは私のために働いた。エラーはなくなります
私の問題は、テーブルのIDがAUTO_INCREMENTではなく、範囲を追加しようとしていたことです。
最近この問題がありました。これは、ユーザーデータベースのアクセス許可のために発生しました。ユーザーデータベースの権限を確認してください。おそらく、ユーザーはdbに書き込む権限を持っていません。