使用C#和Entity Framework将ntext更改为nvarchar

时间:2017-05-12 10:28:38

标签: c# sql-server database entity-framework linq

我必须在SQL Server中创建的现有数据库中添加排序。问题是此数据库包含LinQ的[xml]$mainXML = Get-Content -Path "C:\test2.xml" $mainXML.batch.project[0] # This the first project called test $mainXML.batch.project.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array 方法不支持的ntext列。数据库是用代码优先的方法编写的,所以我可以访问数据库的模板,但我无法查看在服务器上运行的现成数据库。

我尝试更改字符串类型属性,将其标记为

OrderBy

然后我得到了一个

  

序列不包含匹配元素

我不知道如何解决的异常。

这是我想要对数据进行排序的方式(我在下面的说明中得到了例外:

[Column(TypeName = "nvarchar(MAX)")]

在我将MyDatabase.MyTable.OrderBy(x => x.MyRow).Load(); 更改为TypeName之前,我遇到了此错误:

  

大对象(ntext和图像)不能在ORDER BY子句中使用

有人可以帮我解决问题,以便从数据库中对数据进行排序吗?

我会感激任何帮助。提前致谢!

1 个答案:

答案 0 :(得分:0)

在T-SQL中你可以通过多种方式解决这个问题,也许你可以为你采用其中一种吗?

  1. ORDER BY(将MyTextCol转换为nvarchar(max))

  2. 从中创建视图     这个表的字段为nvarchar(max)并使用它     而不是你的桌子(即使将来)

  3. ALTER TABLE myTable ALTER     COLUMN myTextCol nvarchar(max) 最后一个解决了你的问题并且没有时间进行:它只是一个元数据操作,没有任何东西会在你的表中为现有行重新组织