0

例外があります:

NHibernate.HibernateException: Wrong column type in main_Command for column Id.
Found: integer, Expected INT

マッピングは次のとおりです。

<id name="Id" type="int">
  <generator class="identity" />
</id>

クラスプロパティは次のとおりです。

public virtual int Id { get; set; }
4

2 に答える 2

2

SQLite方言のNHibernateソースを確認し、同様の質問に対する回答を見つけます。SQLite Auto IncrementINTEGERに必要なように、すべての符号付き整数型がマップされていないようです。

RegisterColumnType(DbType.Int16, "SMALLINT");
RegisterColumnType(DbType.Int32, "INT");
RegisterColumnType(DbType.Int64, "BIGINT");

しかし、良いニュースは、unsigned int が にマップされることINTEGERです。

RegisterColumnType(DbType.UInt16, "INTEGER");
RegisterColumnType(DbType.UInt32, "INTEGER");
RegisterColumnType(DbType.UInt64, "INTEGER");

したがって、次のマッピングを試してください。

<id name="Id" type="UInt32">
  <generator class="identity" />
</id>

あなたのクラスに対応する変更を加えて:

public virtual UInt32 Id { get; set; }
于 2013-04-05T12:40:27.883 に答える
1

この記事によると、あなたのタイプは間違っていると思います (しかし、私は間違っている可能性があります) 。

.NET プリミティブ マッピング タイプ

Mapping Type  .NET Type      System.Data.DbType 
   Int16     System.Int16    DbType.Int16
   Int32     System.Int32    DbType.Int32
   Int64     System.Int64    DbType.Int64

完全に使用type='Int32'または削除してみてください

于 2013-04-05T12:28:58.277 に答える