3

ASP.NETWebサイトでContosoUniversityのチュートリアルをフォローしています。私は自分のスキルを拡大しようとしているので、フィルターに3番目のオプションを追加してみることにしました。チュートリアルは以下を提供します:

if (!String.IsNullOrEmpty(searchString))
{
    students = students.Where(s => s.LastName.ToUpper().Contains(searchString.ToUpper())
                           || s.FirstMidName.ToUpper().Contains(searchString.ToUpper()));
}

Nicknameという3番目の列があるとしましょう。追加の||を追加して、これをフィルターに追加してみました オペレーター:

if (!String.IsNullOrEmpty(searchString))
{
    students = students.Where(s => s.LastName.ToUpper().Contains(searchString.ToUpper())
                           || s.FirstMidName.ToUpper().Contains(searchString.ToUpper())
                           || s.Nickname.ToUpper().Contains(searchString.ToUpper()));
}

3番目のオプションを追加して実行すると、次のようになります。

[SqlException (0x80131904): Argument data type ntext is invalid for argument 1 of upper function.]

ここで何が欠けていますか?ここで何が起こっているのかをもっと理解するために、次に何を学ぶ必要がありますか?

4

2 に答える 2

2

Entity Framework を使用する前に、NTEXT 列に問題があったことを思い出します。これを回避するために、今では NVARCHAR(MAX) のみを使用しています。それがあなたの状況で役立つかどうかはわかりません..データベースタイプを変更できるかどうか...そうでない場合は、ここに詳細情報があります:

Linq to Entities : NText フィールドで ToLower() を使用する

于 2013-03-12T15:37:53.413 に答える
1

以下のリンクをお試しください。

http://johnnblade.wordpress.com/2011/01/03/sql-query-replace-error-argument-data-type-ntext-is-invalid-for-argument-1-of-replace-function/

現在の text/ntext 値を nvarchar(max) としてキャストする必要があります。

于 2013-03-12T15:31:04.633 に答える