DbContextとSaveChangesメソッドを使用してデータベースに挿入する、複雑で大きなオブジェクトグラフがあります。EF Core 2.0:オブジェクトグラフ内の正確なオブジェクトを検出すると、挿入操作でエラーが発生する
このオブジェクトは、40k行(約3MBのデータ)のテキストファイルを解析した結果です。このオブジェクトの中のいくつかのコレクションには何千ものアイテムがあります。
ファイルを正しく解析してコンテキストに追加して、オブジェクトの追跡を開始できるようにしました。しかし、SaveChangesにしようとすると、それは言う:
Microsoft.EntityFrameworkCore.DbUpdateException:エントリを更新中にエラーが発生しました。詳細については、内部例外を参照してください。 ---> System.Data.SqlClient.SqlException:文字列またはバイナリデータが切り捨てられます。
どのオブジェクトが問題を引き起こしているかを知るスマートで効率的な方法があるかどうかを知りたいと思います。 varcharフィールドがデータを格納するには小さすぎるようです。しかし、それは手動でチェックするテーブルとフィールドがたくさんあります。
もっと具体的なエラーを何とかしたいと思います。私は既にILoggerProviderを設定し、EnableSensitiveDataLoggingオプションをdbContextに追加して、どのsqlクエリが生成されているかを確認することができました。パラメータ値がdbContextによって生成されたログに存在しないため、パラメータ値を表示できるように、MiniProfilerを追加しました。
Webのどこかを読んで、私はEF6でSQLがデータベースに渡されて実行される前にいくつかの検証が行われていることを発見しました。しかし、EFコアでこれはもう利用できないようです。どうすればこの問題を解決できますか?