varchar(max)+ linq to sql

时间:2010-09-28 01:41:47

标签: c# linq-to-sql varchar

我有一个我正在尝试读取的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: alt text

如果我尝试将类型更改为与Object不同的类型,我会在类型't_PriceFormula'的列'Formula2'中获得消息' DbType'VarChar(MAX)之间的映射'和类型'System.Object'不受支持。'

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

thanks888

这看起来有点令人费解,但确实有效。

将字段转换为数组,然后返回字符串。

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());