[英]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.