Oracle客户端Blob 10K限制与NHibernate和Mono
本文关键字:NHibernate Mono 客户端 Blob 10K Oracle | 更新日期: 2023-09-27 18:06:11
一些细节:
NHibernate : 2.1.2.4000
Oracle Instant client : x64 11.2.0.2.0
Mono : Mono JIT compiler version 2.10.2
我目前正在与Oracle和blobs作斗争,其中只有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上工作,除了路径。
任何帮助都将非常感激!
不幸的是,Mono Oracle提供程序现在或多或少被抛弃了(就像Mono跟踪其API的Microsoft Oracle提供程序一样)。既然您已经为数据库引擎支付了大笔费用,我建议您再多花一点钱,购买一个商业支持的Oracle ADO。净提供者。Oracle的dotConnect正式支持Mono(我有很好的使用经验)和DataDirect ADO。Oracle的。NET数据提供程序是100%托管代码,所以理论上它应该也能与Mono一起工作。