2009-03-27 63 views
0

私はSQL 2005でLinq to SQLを使用しています。私は大きな固定幅ファイルを解析し、プロパティ属性を使用してデータベースにマップしたカスタムエンティティを介してSQLにデータをインポートしています。文字列またはバイナリデータが切り捨てられるエラー

プログラムは、このエラーをスローする前に約240レコード実行されます。私は列(それらの4つすべて)と入れようとしているデータをチェックしましたが、このエラーを投げてはいけません。私は今でもvarcharからテキストにカラムを変更するまで行っていますが、それでもエラーはスローされます。手動で同じ値を挿入すると、問題なく挿入されます。

Linq to SQLには既知のバグなどがありますか?挿入するすべてのループでcontext.submitall()を呼び出しています。私はread、.NET 3.5 SP1はSQLからのより良いエラーメッセージを提供していますが、私はまだ何も見ていません。

ありがとうございました。

答えて

0

まあ、私はバグを発見し、それは間違いなくLinqやSQLで問題ではありませんでした。私は切り詰めて、別のオブジェクトのプロパティを変更していましたが、Linq経由でSQLに接続されていたことを認識していませんでした。

教訓:実際にオブジェクトを変更したい場合や、特にデータコンテキストにアタッチされている場合を除き、オブジェクトのプロパティを直接変更しないでください。

+0

これは良い理論ですが、エラーが発生した理由を説明していません – Mario

0

Linq to SQLクラスを作成してからスキーマを変更した可能性はありますか?デザイナーでクラスを削除/再作成したり、デザイナー生成クラスのプロパティを手動で編集したりしない限り、デザイナーエンティティはSQLスキーマを変更しても更新されません。私はクラス内のstring(varchar)カラムのカラム幅を追跡していることを知っていますが、実際にそれをチェックするかどうかはわかりません。私は、しかし、それはデザイナーでクラスを更新することによって解決された自動生成されたIDのようなもので同様の問題を見てきました。

+0

私はこれらのクラスにデザイナーを使用していません。自分のクラスをロールし、適切な属性タグを追加します。スキーマは変更されていません。 – James

関連する問題