0

我正在尝试使用 Dapper 将数据库从 MySQL 迁移到 SQLServer。

除了 TinyInt 字段外,几乎一切都很好。

无论我在 C# 代码中指定什么类型,Dapper 都会系统地抛出一个异常:

{“解析第 18 列时出错(COLUMN_WITH_PROBLEM=0 - SByte)”}。

这似乎与 MySQL 数据库中的一条记录的值为 null 的事实有关

我试过了:

  • int,int?
  • byte,byte?
  • Byte,Byte?
  • sbyte,sbyte?
  • SByte,SByte?
  • short,short?
  • 乃至boolean?

然而我总是有同样的问题。

为了避免这个错误,我必须在我的 C# 代码中指定什么类型?

显然我无法更改数据库中的列类型。

4

1 回答 1

0

可空字节?应该管用。

public class Foo
{
    public byte? Bar { get; set; }
}

    [Test]
    public void TestTinyint()
    {
        var result = _sqlConnection.Query<Foo>(@"select 0 as 'Bar' 
                                                union all select null as 'Bar'");
        Assert.That(result.First().Bar, Is.EqualTo(0));
        Assert.That(result.Last().Bar, Is.Null);
    }

它可能与此处讨论的 MySQL 连接器问题有关。

于 2017-01-17T16:03:37.013 回答