Search code examples
c#linq-to-sqlvarchar

varchar(max) + linq to sql


I've got a varchar(max) column I'm trying to read but the field is being truncated at 4,000 characters. I've seen similar questions, but they are on the sql side.

What do I need to do to get the entire field?

Eg:

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

I've tried things like setting TextSize but it didn't make a difference.:

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

UPDATE:

The server data type is varchar(max). The field in question is formula2: alt text

If I try and change the type to something different like Object, I get message 'Mapping between DbType 'VarChar(MAX)' and Type 'System.Object' in Column 'Formula2' of Type 't_PriceFormula' is not supported.'

Any suggestions?


Solution

  • With thanks to 888.

    This seems a little convoluted but it worked.

    Convert the field to an array, then back to a string.

    var foo = dc.foos.First();
    string formula = new string(foo.Formula2.ToArray());