0

テキスト フィールドを使用するテーブルで作業しているときにエラーが発生しました。

varchar 列の長さを取得している場合は、次のことができます

var result = (from t in context.tablename select t.fullname.Length)

ただし、テキスト フィールドで同じクエリを実行すると、次のようになります。

var result = (from t in context.tablename select t.biography.Length)

エラーが発生します:

Argument data type text is invalid for argument 1 of len function.

この件について少し調べたところ、SQL Server でこのエラーが発生する理由は理解できましたが、それを回避する最善の方法はわかりません。結果を返し、結果の文字列の長さを取得できることはわかっていますが、これを行う簡単な方法はありますか?

4

1 に答える 1

5

最善のオプションは、列のデータ型を更新するVARCHAR(MAX)か、更新することTEXTです。これを行う方法については多くのリソースがありますが、通常はの新しい列を作成し、すべてのデータを新しい列に更新してから、古い列を削除し、最後に新しい列の名前を古い名前に変更します。NVARCHAR(MAX)NTEXT[N]VARCHAR(MAX)

テーブルスキーマを変更できない場合は、を作成しview、そのビューの選択で型キャストを実行する必要があります。ただし、上記のように列のデータ型を変更した方がよい場合があります( dbの所有者ではなく、別のデータベースにビューを作成します)。ただし、EFは、テーブルの場合ほどビューでうまく機能するとは限らないことに注意してください。

于 2012-04-25T13:40:09.967 に答える