【问题标题】:Oracle Client Blob 10K Limitation with NHibernate and Mono?NHibernate 和 Mono 的 Oracle 客户端 Blob 10K 限制?
【发布时间】:2011-10-30 12:04:45
【问题描述】:

手头的一些细节:

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 上运行,当然路径除外。

任何帮助将不胜感激!

【问题讨论】:

标签: c# oracle nhibernate mono blob


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多