2017-01-17 7 views
0

Dapperを使用してMySQLからSQLServerにデータベースを移行しようとしています。小さなintで大まかな問題

TinyIntフィールドを除いてほとんどすべてがOKです。

{ "エラー解析カラム18( - SByte COLUMN_WITH_PROBLEM = 0)"}:私は私のC#コードで指定したタイプが、Dapperのが体系例外をスローどのよう

私が試した

MySQLデータベースのレコードの1つの値がnullであるという事実と関係しているように思わ

  • intを、int?
  • bytebyte?
  • ByteByte?
  • sbytesbyte?
  • SByteSByte?
  • shortshort?
  • とさえboolean?

しかし、私はいつも同じ問題を持っています。

このエラーを回避するには、どのタイプをC#コードで指定する必要がありますか?

もちろん、データベースの列の種類を変更することはできません。

+0

お試しいただいたものはどれですか? – juharr

+0

@juharrそれは私の質問にあります:int、int ?, byte、byte ?, Byte Byte ?, sbyte、sbyte ?, SByte、SByte?ブール値ですか? –

+0

Tinyint列は符号付きか符号なしですか? – Bridge

答えて

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

これは、hereで説明されているMySQLコネクタの問題に関連する可能性があります。

+0

あなたのコードは効果的に動作しますが、なぜ私は理解できません。多くの列がありますが、Dapperには影響しません。あなたのケースで0とnullがtinyintとしてフォーマットされていないので、 –

+0

がさらに失われている可能性があります。 –

+0

可能性のあるMySQLコネクタの問題に対する回答を更新します。 –

関連する問題