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源代码中的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'
或完全删除