本番サーバーまたは別の開発者のマシンで作成したコードを実行すると、この行でクラッシュします。
Ac_CalcDetail xy = db.Ac_CalcDetails.Where(chld => chld.CalcIdent.Equals(CalcIdent)).First();
CalcIdentは、文字列としての単なるGUIDです。
ローカルデータベースでsqlmetalを実行しました。ここで、Ac_CalcDetailは、この強く型付けされたコードとクラスAc_CalcDetailを作成するためのメインテーブルです。問題は、ここで本番サーバーまたは他の開発者のマシンの1つでコードを実行するときです。LINQを1年以上使用していて、問題が発生したことはないので、これについて本当に混乱しています。以前、私が得た例外は、どのフィールドが欠落していて、どれが素晴らしいかという非常に具体的なものでしたが、私の調査から、このエラーは、間違ったデータ型を持つ特定のフィールドである可能性があります。悪夢であり、このエラーだけでデバッグすることは完全に不可能です。
現在のところ、唯一の解決策は、データベースをSQL Server Management Studioにバックアップしてから、他のすべてのユーザーにこれを使用させることだと思います。私たちは小さな会社なので、自分のデータベースに対してやりたいことを何でもする傾向があります。次に、さまざまなSQLスクリプトを作成して、ドロップボックスフォルダーに配置し、データベースを同期します(または少なくとも同期していると思ったもの)。これが、LINQの使用を停止するか、より高度なSQLのもの(SQLリポジトリまたはSQLデータベース比較ツールなど)の使用を開始する必要があることを意味するかどうかはわかりません。
私たちのデータベースは(もしあれば)何年もの間完全に同じではなかったので、なぜこのエラーが今起こっているのか、そしてなぜエラーメッセージが何も言わないのかわからないのですが、それは非常に奇妙です!