3

我一直在关注 ASP.NET 网站上的 Contoso 大学教程。我正在尝试扩展我的技能,因此决定尝试在过滤器中添加第三个选项。本教程提供:

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

假设我有第三列称为昵称。我尝试通过添加额外的 || 将其添加到过滤器中 操作员:

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()));
}

当我添加第三个选项运行时,我得到:

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

我在这里想念什么?接下来我需要学习什么来帮助我更多地了解这里发生的事情?

4

2 回答 2

2

我记得在使用实体框架之前遇到了 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 回答