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)if it isTEXTNVARCHAR(MAX)if it is NTEXT。有很多关于如何执行此操作的资源,但通常您创建一个新列,[N]VARCHAR(MAX)然后将所有数据更新到新列中,然后删除旧列,最后将新列重命名为旧名称。

如果您无法更改表架构,那么您将需要创建一个view并在该视图的选择中进行类型转换..但是您也可能只是如上所述更改了列数据类型(除非您'不是数据库所有者,您在不同的数据库中创建视图)。但请注意,EF 在视图方面的表现并不总是与在表格方面表现得一样好。

于 2012-04-25T13:40:09.967 回答