varchar(max) + linq към sql

Имам колона varchar(max), която се опитвам да прочета, но полето се съкращава на 4000 знака. Виждал съм подобни въпроси, но те са от страна на sql.

Какво трябва да направя, за да получа цялото поле?

Eg:

using (DataContext dc = new DataContext())
{
    var foo = dc.foos.First();
    if (foo.Formula2.Length > 4000)
    {
        Console.WriteLine("success!");
    }
}

Опитах неща като настройване на TextSize, но не се получи разлика.:

dc.ExecuteCommand("SET TEXTSIZE 100000;");
var foo = dc.foos.First();

АКТУАЛИЗАЦИЯ:

Типът данни на сървъра е varchar(max). Въпросното поле е formula2: alt text

Ако се опитам да променя типа на нещо различно като Object, получавам съобщение „Съпоставянето между DbType „VarChar(MAX)“ и тип „System.Object“ в колона „Formula2“ от тип „t_PriceFormula“ не се поддържа. '

Някакви предположения?


person Christian Payne    schedule 28.09.2010    source източник
comment
Как е конфигурирана колоната в DBML? по-специално свойството Server Data Type?   -  person Marc Gravell    schedule 28.09.2010
comment
Какво е нивото на съвместимост на сървъра на базата данни? вижте тук - msdn.microsoft.com/en-us/library/bb510680.aspx   -  person Antony Scott    schedule 30.09.2010


Отговори (2)


С благодарение на 888.

Това изглежда малко заплетено, но проработи.

Преобразувайте полето в масив и след това обратно в низ.

var foo = dc.foos.First();
string formula = new string(foo.Formula2.ToArray());
person Christian Payne    schedule 13.10.2010
comment
Това не е ли отговорът на 888? Не трябва ли да им го присъдите? - person Merlyn Morgan-Graham; 13.10.2010
comment
Предложението на 888 беше полето да се преобразува във varbinary(max). Гласувах и използвах това, за да получа своя отговор. - person Christian Payne; 13.10.2010

звучи като .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());
person Bonshington    schedule 12.10.2010
comment
Преобразуването на полето във varbinary е екстремно. Ако базата данни поддържа полето, тогава трябва да има начин да го извадите... - person Christian Payne; 13.10.2010