9

これは質問ではなく解決策ですが、答えを見つけるのに多くの検索が必要であり、グーグルはあまり役に立たなかったので、前もってお詫びします。そこで、エラーを提供してコミュニティに何かを返したいと思いました。将来のグーグルを助けるための解決策。

LINQ to SQLを使用しているときに、データテーブルに変更を(2回目)送信するときに問題が発生しました。最初に変更を送信するときはすべて問題ありませんが、2回目に変更を送信するときは、次のようなSQL例外を受け取りました。

"The text, ntext, and image data types cannot be compared or sorted, 
 except when using IS NULL or LIKE operator"

SubmitChanges()を呼び出しているときに例外がスローされましたが、LINQの遅延読み込みのため、Refresh(RefreshMode.KeepCurrentValues、myObject)を呼び出しているときに実際に前の行で発生しました。

4

1 に答える 1

10

問題は、更新モードが現在のバージョンをすべてのフィールドのデータベースバージョンと比較しようとしていることであり、SQLはその種類の比較テキスト、ntext、および画像列をサポートしていません(少なくともSQL Server 2000ではサポートされていません)。

解決策は、列定義に次の属性を追加することです

UpdateCheck = UpdateCheck.Never

例えば

[Column(DbType = "NText", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]

その後、更新モードは正常に機能し、SubmitChangesにはそれ以上の問題はありません。

于 2009-09-22T13:55:09.670 に答える