Nhibernate发现:整数,期望INT

本文关键字:期望 INT 整数 发现 Nhibernate | 更新日期: 2023-09-27 18:07:28

我得到一个异常:

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

映射为:

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

class属性是:

public virtual int Id { get; set; }

Nhibernate发现:整数,期望INT

检查NHibernate源代码中的SQLite方言,并找到类似问题的答案。看起来所有的有符号整数类型都不映射到INTEGER,而这是SQLite自动增量列所要求的。

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

我认为你的类型是错误的(但我可能是错的),根据这篇文章是从曼宁出版物的NHibernate在行动。

。. 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'或完全删除