SQL CE 4 错误:ntext 和 image 数据类型不能在 WHERE、HAVING、GROUP BY、ON 或 IN 子句中使用

Posted

技术标签:

【中文标题】SQL CE 4 错误:ntext 和 image 数据类型不能在 WHERE、HAVING、GROUP BY、ON 或 IN 子句中使用【英文标题】:SQL CE 4 Error: The ntext and image data types cannot be used in WHERE, HAVING, GROUP BY, ON, or IN clauses 【发布时间】:2012-12-14 12:33:38 【问题描述】:

我正在尝试将旧的 SQL Server 数据库(在 Entity Framework 4 中创建)迁移到 SQL CE 4。我已经移动了所有内容,重新创建了架构并将数据插入到 SDF 文件中,但是现在当我尝试启动我的网站,我收到此错误:

The ntext and image data types cannot be used in WHERE, HAVING, GROUP BY, ON, or IN clauses, except when these data types are used with the LIKE or IS NULL predicates.

我访问了几个链接,它们都链接到 Microsoft 修补程序,该修补程序适用于 SQL CE 3.5。我正在运行 SQL CE 4,但找不到任何相关内容。

更新:我为代码优先方法找到了一些可能的解决方案,但我的数据库是模型优先的。

【问题讨论】:

将列数据类型从 ntext 更改为 nvarchar(4000) 但我的博客条目超过 4000 个字符(可以任意长) 您找到答案了吗?我在使用 SQL CE 4 时遇到了同样的问题 @Pepedou 不幸的是我不记得了。我已经放弃了这个项目。 【参考方案1】:

我刚刚在使用 Entity Framework 和 SQL CE 时遇到了这个问题。它无法生成按图像列过滤结果的动态 SQL 语句。

对我来说,这段代码失败了(令牌类型为 byte[]):

var dataStore = new DataStore();
var document = dataStore.Documents.SingleOrDefault(d => d.Token == token);

我让它工作的简单方法是首先将文档加载到内存中的列表中,然后再过滤它。这对我来说很好,因为列表永远不会很大。

var dataStore = new DataStore();
var documents = dataStore.Documents.ToList();
var document = documents.SingleOrDefault(d => d.Token.SequenceEqual(token));

【讨论】:

以上是关于SQL CE 4 错误:ntext 和 image 数据类型不能在 WHERE、HAVING、GROUP BY、ON 或 IN 子句中使用的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server Management Studio for SQL CE 数据库中查看所有 ntext 列文本

.SQL Server中 image类型数据的比较

使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]

当列是NTEXT时,SQL Server:IN('asd')不工作

错误 175:在配置中找不到指定的存储提供程序,或者对 EF4 和 SQL Server CE 4 无效

SQL Server CE 4.0 和频繁损坏的内存崩溃