LINQ Error: String must be exactly one character long.

When working with some Linq today, I kept getting the following error:



String must be exactly one character long.


This one had me scratching my head for a while.  Turns out the problem was in the Linq to SQL designer, and the way the code generator interpreted results from the view I was using.


The problem stems from the designer translating a varchar(1) to a system.char(1), a fixed length variable, instead of a system.string, which can have a variable length.  If the value is blank or NULL (allowable in the database), the fixed length condition isn’t met and an error is thrown.


To remedy this, go back to the designer, pin the Properties sidebar open, and look at the elements which have been mapped.  Any one which is mapped to Char(1) should be changed to a String.  This should fix your problem.


Below, the image on the left shows the improper mapping, and the image on the right shows the fixed mapping.

5 thoughts on “LINQ Error: String must be exactly one character long.”

  1. Thanks for that, I have this exact problem. However I’m mapping my table to a Gridview and can’t find where I need to change the Type for the Column(s).

    -Matt

  2. Matt,

    Are you using Linq with that gridview? You change the setting in the DBML designer. If not, I’m not sure what to look at, I haven’t worked with many GridViews.

Comments are closed.