簡體   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