我得到一个例外:
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; }
我得到一个例外:
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; }
检查SQLite 方言的 NHibernate 源并找到类似问题的答案。看起来所有有符号整数类型都没有按照SQLite Auto Increment列INTEGER
的要求映射。
RegisterColumnType(DbType.Int16, "SMALLINT");
RegisterColumnType(DbType.Int32, "INT");
RegisterColumnType(DbType.Int64, "BIGINT");
但好消息是无符号整数确实映射到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; }
我认为你的类型是错误的(但我可能是错的),根据这篇文章取自 Manning Publications 的 NHibernate in Action。
.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'
完全使用或删除它