2011-08-19 48 views
0

一些細節斷手:使用NHibernate和Mono的Oracle客戶端Blob 10K限制?

NHibernate : 2.1.2.4000 
Oracle Instant client : x64 11.2.0.2.0 
Mono : Mono JIT compiler version 2.10.2 

目前我掙扎了一下與甲骨文和斑點,從而只斑的10K插入到數據庫中。雖然這在Windows上有效,但在Linux上似乎有些不同。看着sql,每件事情都很好。這裏是截斷的sql語句。

INSERT INTO Voters (Photo) VALUES (:p1);:p1 = 0x424DF627090000000000360000002800000090.... 

Hibernate映射看起來像如下

和類如下

public partial class Voter : BusinessBase<long> 
{ 
    #region Declarations 
    private byte[] _photo = null; 
    #endregion 

    public virtual byte[] Photo 
    { 
     get { return _photo; } 
     set { _photo = value; } 
    } 
} 

其中選舉人對象如下

保存外表的代碼
Voter entityVoter = Voter.copyFrom(record.TRANSACTION); 
IVoterManager managerVoter = ManagerFactory.Instace.GetVoterManager(managerBulkImport.Session); 
managerVoter.SaveOrUpdate(entityVoter); 
File.WriteAllBytes("/home/user/voter" + entityVoter.Id + ".bmp", entityVoter.Photo); 

並且在對象保存後寫入磁盤的映像也是正確的,這使我認爲問題可能與oracle客戶端有關嗎?正如我所說,這個代碼在Windows上工作,除了路徑自然。

任何幫助將不勝感激!

+0

<類名= 「nosuch.BusinessObjects.Voter,nosuch」 表= 「投票人」 懶= 「假」> <發生器類= 「分配」/ > nosuch

回答

1

不幸的是,單聲道Oracle提供者現在已經或多或少被拋棄了(就像API Mono跟蹤的Microsoft Oracle provider一樣)。由於您已經爲數據庫引擎支付了大量資金,因此我建議花費更多一點,並獲得商業支持的Oracle ADO.Net提供程序。 dotConnect for Oracle正式支持Mono(我對它有很好的體驗),而DataDirect ADO.NET Data Provider for Oracle是100%託管代碼,所以它理論上應該與Mono一起工作。