2016-11-08 658 views
0

我使用實體框架和我寫這個代碼從DB一些結果:「參數的數據類型NTEXT是len函數的參數1無效」錯誤

ReviewsDBEntities DB = new ReviewsDBEntities(); 
var result=DB.Review.Where(r => r.ReviewText.Length > 200); 

但我得到這個錯誤作爲內部錯誤:「參數數據類型ntext對len函數的參數1無效」

我查了一下,發現ReviewText的類型定義爲ntext,函數Len不會運行它數據庫方面。現在,我不知道我怎樣才能更改代碼以獲得與長度超過200

+0

您的錯誤指向正確的方向。我猜測你的基礎類型是'文本',不應該再使用。如果可以將該類型更新爲varchar(max)或nvarchar(max)。實體在確定此舊類型的長度時遇到問題。你可以做一個黑客我相信去'.ToString()。長度'和嘗試,但仍不能解決的根本問題是類型。 – djangojazz

+0

我剛剛寫了'.ToString()。Length',它仍然不起作用。 – Saman

+0

這太糟糕了,如果可能的話,我建議改變這種數據類型,即使你從下面的Jeroen或其他人那裏得到正確的答案。使用這種類型並不是最佳實踐,它也會在以後的其他方面限制你。 – djangojazz

回答

2
var result=DB.Review.Where(r => SqlFunctions.DataLength(r.ReviewText)/2 > 200); 

爲什麼/ 2 ReviewTexts?因爲DATALENGTH以字節爲單位返回長度,並且NTEXT包含Unicode字符,每個字符消耗2個字節。