使用NHibernate和Mono的Oracle Client Blob 10K限制?

时间:2011-08-19 10:01:59

标签: c# oracle nhibernate mono blob

一些细节:

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

我目前正在努力使用Oracle和blob,因此只有10K的blob插入到数据库中。虽然这在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,除了路径之外。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

不幸的是,Mono Oracle提供程序现在或多或少被放弃了(正如API Mono正在跟踪的Microsoft Oracle provider)。由于您已经为数据库引擎支付了大量资金,我建议您花一点钱购买商业支持的Oracle ADO.Net提供商。 dotConnect for Oracle正式支持Mono(我对它有非常好的经验),DataDirect ADO.NET Data Provider for Oracle是100%托管代码,因此它理论上应该与Mono一起使用。