繁体   English   中英

找到的Nhibernate:整数,预期为INT

[英]Nhibernate Found: integer, Expected INT

我有一个例外:

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

检查用于SQLite方言的NHibernate源,并找到类似问题的答案。 看起来所有带符号的整数类型都不像SQLite自动增量列所要求的那样映射到INTEGER

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

但是好消息是,未签名的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'或将其完全删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM