【问题标题】:Mapping char(8) to string property with Dapper使用 Dapper 将 char(8) 映射到字符串属性
【发布时间】:2013-06-06 22:45:23
【问题描述】:

我有下表,删节:

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,
)

当我尝试以下 Dapper 代码时 - 我是一个完整的 Dapper 新手,昨天发现它 - 我收到一个错误:

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");
}

错误是:

解析第 3 列时出错(TERM_SLA=01010B01 - 字符串)

我看不出为什么任何东西都必须“解析”一个字符串,不要介意这样做时遇到错误。这是什么原因造成的>

【问题讨论】:

  • 您的 POCO 属性类型是否与数据存储的列匹配?

标签: c# database orm dapper micro-orm


【解决方案1】:

Dapper 期望 .NET 数据类型与您的数据库中的数据类型完全相同。 Term_Sla 必须是 String 类型。

【讨论】:

    【解决方案2】:

    这是我的经验。我希望这可能会有所帮助,有人:

    我遇到了同样的错误,.net 类型与 Sql 数据类型匹配;除了一些数据是空的。 因此,请确保您的 sql 数据不可为空,否则相应地调整您的 .net 属性类型。

    【讨论】:

      【解决方案3】:

      在我的例子中,有一个枚举字段,它没有在 SQL 记录中列出。

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        相关资源
        最近更新 更多