我有一个我正在尝试读取的varchar(max)列,但该字段被截断为4,000个字符。我见过similar questions,但他们在sql端。
我需要做什么才能获得整个领域?
例如:
using (DataContext dc = new DataContext())
{
var foo = dc.foos.First();
if (foo.Formula2.Length > 4000)
{
Console.WriteLine("success!");
}
}
我尝试过像setting TextSize这样的东西,但它没有什么区别。:
dc.ExecuteCommand("SET TEXTSIZE 100000;");
var foo = dc.foos.First();
更新
服务器数据类型为varchar(max)。有问题的领域是公式2:
如果我尝试将类型更改为与Object不同的类型,我会在类型't_PriceFormula'的列'Formula2'中获得消息' DbType'VarChar(MAX)之间的映射'和类型'System.Object'不受支持。'
有什么建议吗?
答案 0 :(得分:3)
这看起来有点令人费解,但确实有效。
将字段转换为数组,然后返回字符串。
var foo = dc.foos.First();
string formula = new string(foo.Formula2.ToArray());
答案 1 :(得分:2)
听起来像.net将varchar转换为nvarchar 我不知道如何直接解决它。但System.Text.Encoding可能有所帮助 试试这个
//1 set col in db to varbinary(max)
//2 and when u want to save to db
string formula = "...";
System.Data.Linq.Binary bin = new System.Data.Linq.Binary(System.Text.Encoding.ASCII.GetBytes());
//3 when u pull ou
Binary bin = row.Formula2;
string formula = System.Text.Encoding.ASCII.GetString(bin.ToArray());