Mapping char(8) to string property with Dapper

ProfK picture ProfK · Jun 11, 2013 · Viewed 18.7k times · Source

I have the following table, abridged:

CREATE TABLE [dbo].[TERMINAL] (
    [TERM_CODEID]    SMALLINT     NOT NULL,
    [TERM_ACTIVE]    SMALLINT     NOT NULL,
    [TERM_NAME]      VARCHAR (30) NOT NULL,
    [TERM_SLA]       CHAR (8)     NOT NULL,
    [TERM_SERIAL]    VARCHAR (8)  NULL,
    [TERM_VERSION]   VARCHAR (8)  NULL,

    [TERM_STATUS]    INT          NULL,
)

When I try the following Dapper code - and I'm a complete Dapper novice, found it yesterday - I get an error:

using (var conn = new SqlConnection("data source=ourServer; initial catalog=ourDb;user id=sa;password=ourPassword;"))
{
    conn.Open();
    var terms = conn.Query<Terminal>("select * from TERMINAL");
}

The error is:

Error parsing column 3 (TERM_SLA=01010B01 - String)

I can see no reason why anything should even have to 'parse' a string, never mind experience an error while doing so. What could be causing this>

Answer

Alex picture Alex · Jun 11, 2013

Dapper expects the .NET data type to be exactly the same as in your database. Term_Sla needs to be of type String.