この問題に関連する多くの投稿を読みましたが、答えが見つかりませんでした。Excel から SQL Server に大量のデータを読み込もうとしています。数千のレコード。そして、私はこの例外を受けています:
文字列型やバイナリは省略されます。ステートメントは終了されました。
明らかに、一部の値はデータベースのフィールド サイズを超えています。エラーは SQL Server AFIK から発生します。
私の質問 - どのレコードとどのフィールド値がこれを引き起こしたのかをどうやって知ることができますか?
私が言及したものを除いて、EF例外には特定の詳細はありません。
どんな助けでも大歓迎です。
一部のユーザーはコード フラグメントを要求しましたが、実際には非常に単純です。問題はコードにあるわけではありません。
// employees is a List<Employee> collection loaded from Excel
using (var context = new Entities())
{
employees.ForEach(e => context.Employee.AddObject(e));
context.SaveChanges();
}
また、DbEntityValidationException (Entity Framework 5.0 でのみ使用可能) を使用するための提案されたアプローチは機能せず、catchブロックは例外をキャッチしませんでした。
try
{
ImportData();
}
catch (DbEntityValidationException ex)
{
foreach (var item in ex.EntityValidationErrors)
{
//...
}
}
これまでに見つけた唯一の解決策は、SQL Server プロファイラーを使用し、監視する次のイベントを定義することです。
メールが長すぎることがわかりました。