使用 Fluent NHibernate、Oracle 10g 和 OracleClientConfiguration.Oracle10 映射 clob

2024-04-15

我一直在尝试使用 Fluent NHibernate 1.2.0.712 针对 Oracle 10g 映射 clob 字段。我正在使用 System.Data 提供程序,因为它默认可用,并试图避免由于以前的客户端问题而添加对 ODP.Net 的引用。

但是,当我尝试插入具有映射的 clob 属性的实体时,出现错误:

ORA-01461: 只能绑定 LONG 值以插入 LONG 列

我尝试通过使用以下约定来解决此问题,并使用 [StringLength(4000)] 装饰适当的属性:

public class StringLengthConvention : AttributePropertyConvention<StringLengthAttribute>
{
    protected override void Apply(StringLengthAttribute attribute, IPropertyInstance instance)
    {
        instance.Length(attribute.MaximumLength);
    }
}

这不起作用。

然后我尝试使用“TEXT”、“CLOB”和“clob”值进行以下操作。两者都不起作用:

    public class plaparteMappingOverride : IAutoMappingOverride<plaparte>
    {
        public void Override(AutoMapping<plaparte> mapping)
        {
           Map(x => x.disposiciones).CustomSqlTypeIs("TEXT");
        } 
    }

除了添加 ODP 作为提供程序之外,还有人对此修复有其他建议吗?


备查:这个帖子 http://thebasilet.blogspot.be/2009/07/nhibernate-oracle-clobs.html完美地描述了导致此错误的原因以及解决方法。

ORA-01461: 只能绑定 LONG 值以插入 LONG 列

这个错误不是很有帮助,仔细观察它很可能会导致 有关 Oracle 补丁等的主题。实际上这是一个 微软 oracle 客户端驱动程序的错误。司机误 推断正在保存的字符串的列类型,并尝试强制 服务器将 LONG 值更新为 CLOB/NCLOB 列类型。这 不正确行为的原因更加模糊且仅 当满足以下所有条件时会发生。

  1. 当我们设置 IDbDataParameter.Value = (长度为: 4000 > length > 2000 的字符串)
  2. 当我们设置 IDbDataParameter.DbType = DbType.String
  3. 当数据库列的类型为 NCLOB/CLOB 时

不幸的是 NHibernate 2.0 的默认行为是完全执行以下操作 上面,使得它更有可能遇到这个丑陋的错误 使用nhibernate和oracle。

博客文章中提供的解决方案:自定义 NHibernate Oracle 驱动程序:

/// <summary>
/// Initializes the parameter.
/// </summary>
/// <param name="dbParam">The db param.
/// <param name="name">The name.
/// <param name="sqlType">Type of the SQL.
protected override void InitializeParameter(System.Data.IDbDataParameter dbParam, string name, global::NHibernate.SqlTypes.SqlType sqlType)
{
    base.InitializeParameter(dbParam, name, sqlType);

    //System.Data.OracleClient.dll driver generates an exception
    //we set the IDbDataParameter.Value = (string whose length: 4000 > length > 2000 )
    //when we set the IDbDataParameter.DbType = DbType.String
    //when DB Column is of type NCLOB/CLOB
    //The Above is the default behavior for NHibernate.OracleClientDriver
    //So we use the built-in StringClobSqlType to tell the driver to use the NClob Oracle type
    //This will work for both NCLOB/CLOBs without issues.
    //Mapping file will need to be update to use StringClob as the property type
    if ((sqlType is StringClobSqlType))
    {
        ((OracleParameter)dbParam).OracleType = OracleType.NClob;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Fluent NHibernate、Oracle 10g 和 OracleClientConfiguration.Oracle10 映射 clob 的相关文章

  • Oracle 10g 内连接的 0RA-00952

    这有效 SELECT PRODUCT INFOS FIELD VALUE PRODUCT INFOS COIL ID SYSTEM PRODUCT INFOS TIME STAMP PRODUCT INFOS FIELD NAME FROM
  • 升级到 NHibernate 3.1 时 NHibernate 映射中断

    我最近刚刚升级到 FluentNHibernate 1 2 它使用 NHibernate 3 1 升级后 我的一些旧映射无法正常工作 我一直很难弄清楚为什么 我想也许这里有人可以提供帮助 我有 3 个课程 练习 练习和练习练习 一个练习可以
  • NHibernate 获取没有主键的子项

    我试图通过映射将对象集合放入父对象中 我有一个主键是 guid Id 的父对象 ScoreCard 和一个主键是 guid Id 的子 Score 对象 我想根据两个对象都有的两个字段为父对象选择子对象 但我无法让它工作 这是映射
  • 发生异常后不刷新会话 - NHibernate

    我正在 NET 3 5 NHibernate 下开发一个 ASP NET MVC Web 应用程序 并托管在 Windows Azure 上 当 web 应用程序从本地开发结构运行时 它可以正常工作 然而 当我将其移动到 Windows A
  • 每个会话的 Nhibernate 会话示例

    您好 nhibernate 的一些专业人士能给我每个会话的 Nhibernate 会话实现示例还是 unhaddins 实现吗 或者解释如何做到这一点 此致 恩迪斯 我使用 NHibernate 工作了 4 年 此前我曾与 每次操作打开会话
  • 如何在使用 NHibernate 进行任何插入之前增加 ID

    看起来NH只获取一次MAX ID 第一次插入然后在内部存储这个值 这会在其他进程插入数据时给我带来一些问题 然后我没有实际的 ID 并且抛出重复键异常 假设我们有桌子Cats CREATE TABLE Cats ID int Name va
  • 多态性:ORM 实体是领域实体还是数据实体?

    我有一个 BankAccount 表 LINQ to SQL 生成一个名为 BankAccount 的类 如下所示 global System Data Linq Mapping TableAttribute Name dbo BankAc
  • 软删除 Nibernate

    我想对我的数据库表进行软删除 我应用了以下语句 如此处所述http nhibernate info blog 2008 09 06 soft deletes html http nhibernate info blog 2008 09 06
  • NHibernate 应如何更新映射为版本的属性

    使用流畅的 NHibernate 我在使用映射的类上有一个属性Version Version x gt x Version 当我保存对象时 Version 属性会按照我的预期在数据库中递增 但对象上的属性值似乎只是有时会发生变化 using
  • Fluent NHibernate 一对一映射

    我很难利用 Fluent NHibernate 的 HasOne 映射 基本上 A 类在 B 类中可以有匹配的 只有一条或没有 记录 请帮助定义关系的 AMap 和 BMap 类 谢谢 public class A public virtu
  • 如何对Oracle进行SQL注入

    我正在对一个系统进行审计 开发人员坚称该系统可以防止 SQL 注入 他们通过去掉登录表单中的单引号来实现这一点 但后面的代码没有参数化 它仍然使用字面 SQL 如下所示 username username Replace var sql s
  • 会话已关闭对象名称:“ISession”。在 NHibernate.Impl.AbstractSessionImpl.ErrorIfClosed() - 如何阻止会话过早关闭

    我在带有 MySQL 的 MVC C 应用程序中使用 NHibernate 我正在尝试让多个用户访问该会话 我一直在使用 InRequestScope 在我的会议上 但我仍然得到 System ObjectDisposeException
  • 覆盖默认的 Fluent NHibernate 列映射

    我正在尝试找到更改 Fluent NHibernate 自动映射行为的语法 我将如何修改下面的代码来映 射UserId属性到名为用户标识符 举个例子 public class MyTypeMap ClassMap
  • 具有子集合成员条件的 NHibernate 查询仅返回部分子集合

    我与以下人员之间存在亲子关系Teacher and StudentReport Each StudentReport有一个时间戳字段记录老师完成报告的时间 我有一个查询 要查找截至某一分钟前已完成一份或多份报告的所有教师 public IL
  • ORACLE:未找到数据——但数据存在

    调试包过程 当实际上有数据时却找不到数据 仅测试 SELECT SELECT trim trailing from GL SECURITY as DUMMY FROM b2k user b2k WHERE sms username FUCH
  • NHibernate:将 ICriteria 转换为 DetachedCriteria

    任何人都知道如何将 ICriteria 转换为 DetachedCriteria 我需要使用现有的 ICriteria 作为子查询的一部分 使用 Add Subqueries PropertyIn Name myDetachedCriter
  • Lightspeed 与 NHibernate

    有什么体验光速 http www mindscape co nz products LightSpeed comparison aspx Mindscape 提供的比较并没有过多说明 NHibernate Lightspeed 看起来很灵活
  • 可排序的 Telerik 网格 + NHibernate、IQueryable 和 ASP.NET MVC

    我正在尝试让 Telerik 网格工作 分页工作正常 我的视图代码如下所示 Html Telerik Grid Model Name Grid Columns columns gt columns Bound o gt o ItemName
  • 如何判断一个引用的对象是否可以删除?

    我有一个名为 Customer 的对象 它将在其他表中用作外键 问题是我想知道是否可以删除 客户 即 它没有在任何其他表中引用 Nhibernate 可以做到这一点吗 你所要求的是找到的存在CustomerPK值在引用表FK列中 有很多方法
  • dbms_xmlgen.getxml - 如何设置日期格式

    我们使用 dbms xmlgen getxml 实用程序通过 SQL 查询生成 xml 该查询从几乎 10 15 个相关表中获取数据 默认情况下 日期格式生成于dd MMM yy格式 有什么方法可以在 dbms xmlgen getxml

随机推荐

  • 苹果商店拒绝iPhone申请的原因[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谁能帮我了解苹果商店拒绝或提出反对提交任何iPhone申请的可能原因 以下是可能的原因 非官方的 从这里 http 10base t co
  • 如何将字节数组作为 UDT 属性从 VB6/VBA 传递到 C# COM DLL?

    我有一个 C 库 我试图将其公开给 VBA 我可以很好地将参数传递给函数 即 ref byte someArray 但传递对象或结构是行不通的 如果我尝试将字节数组作为类的属性传递 我会在 VB 中收到以下错误 函数或接口标记为受限 或者函
  • 导入 CSV,用 ; 分隔而不是 PowerShell

    我正在使用 CSV 来存储一些我想在 Powershell 中使用的信息 为了使 CSV 更 可读 我决定将每条信息放入单独的字段中 如果我使用import csv在powershell中 返回是这样的 Test1 Test2 Test3
  • Cakephp Auth: $this->Auth->login错误消息

    我正在使用身份验证组件 我在 beforeFilter 中设置 this gt Auth gt loginError 但我还有另一种可能性 如果用户输入的用户名和密码正确 但 User status pending 我怎样才能显示不同的消息
  • 如何限制 UITabBarController 上的选项卡数量?

    我有一个带有 UITabBarController 的 iPhone 应用程序 一切都很好 该应用程序的选项卡数量超出了显示屏纵向宽度所能显示的选项卡数量 因此我们总共看到 5 个选项卡 最后一个是 更多 选项卡 问题是 我们希望将一些 不
  • Android点击通知未打开附加的Activity

    我想在单击状态栏上的通知时打开一个活动 我在 StackOverflow 上看到过这个答案 但这些答案都不适合我 此问题仅出现在 Lollipop 设备上 最好的重现方法是 1 启动应用程序 2 后台应用程序 3 接收推送通知 4 单击通知
  • Jinja 对可变内容进行嵌套渲染

    假设我在变量 X 中有实际的 jinja 模板代码 假设 X 的内容是 some other variable 如何在渲染 X 内容的同时显示 X 例如 这不起作用 X 因为它只是将其渲染到屏幕 some other variable 而不
  • Android 软键盘遮挡 ScrollView 中的 EditText

    我有一个 TableLayout 它在 ScrollView 内填充 parent 一切都很完美 除了当显示软键盘时它遮盖了最后几个 EditText 从技术上讲 屏幕无法再向下滚动 因为如果不显示键盘 屏幕就会容纳所有内容 只是当键盘显示
  • 获取多选列表框的选定值

    我有一个多选模式的列表框 它与数据库中的 15 个值绑定数据 我有以下代码来显示列表框中选定的每个项目的选定值 foreach var list in list box SelectedItems MessageBox Show list
  • 这里不允许使用 oracle 列

    我收到这个错误 Error report ORA 00984 column not allowed here ORA 06512 at line 14 00984 00000 column not allowed here 这是代码 我复制
  • 如何最好地使用 ASP.NET MVC 中的 Expires 标头?

    我希望能够为用户通过 GET 请求下载的某些项目设置较长的过期时间 我想说 这对于 10 分钟来说很好 即我想将 Expires 标头设置为 10 分钟 这些请求是通过 AJAX 在页面中显示的 HTML 片段 它们对用户会话很有好处 我不
  • jQuery imgAreaSelect 隐藏/显示?

    我一直在尝试隐藏和展示imgAreaSelect选择框取决于是否选中复选框 我试过了 var ias photo imgAreaSelect instance true ias setOptions show false 但它似乎没有做任何
  • 如何通过指定 Gnuplot 脚本内的所有点来绘制数据而无需单独的文件?

    我的程序生成调用 gnuplot 的 bash 脚本 我不想创建额外的文件来存储数据 有什么方法可以显式调用所有值吗 或者可能让 bash 创建一个临时文件 就像是 plot 1 5 2 10 3 1 就是我正在寻找的 您可以使用内联数据的
  • 如何避免使用全局变量? (python - Flask-socketio 应用程序)

    我试图弄清楚如何不为我的应用程序使用全局变量 但我想不出其他任何东西 实际上 我正在 Flask SocketIO 模块的帮助下编写一个 Web 界面 以便与音乐播放器实时交互 这是我的代码片段 其中包含 play 函数 我想我只需要一个示
  • 在函数装饰器中使用 pytest 夹具

    我想为我的测试函数构建一个有多种用途的装饰器 其中之一是帮助将属性添加到生成的junitxml 我知道有一个fixture https docs pytest org en latest usage html record property
  • 通过 C# 将消息放入 Websphere MQ 的数据长度与手动放入相同消息的数据长度不同

    MQMessage queueMessage new MQMessage queueMessage WriteString strInputMsg queueMessage Format MQC MQFMT STRING MQPutMess
  • 如何优雅地忽略Python函数的一些返回值?

    有时 函数给出一个返回值 您只想丢弃该返回值 而不是将其发送到输出流 处理这个问题的优雅方法是什么 请注意 我们正在讨论一个返回无法更改的内容的函数 def fn return 5 我个人用过null之前 但我正在寻找一种更Pythonic
  • 带有值“变量”的字典

    我希望创建一个这样的字典 Dictionary
  • 如何更改 Android 模拟器正在使用的 RAM 数量?

    在第一次设置时 Android Studio 询问我模拟器将使用多少内存 我输入了800M 但是速度很慢 我需要把它弄大一点 比如 1 5GB 我怎样才能做到这一点 第一次设置后可以编辑吗 我过去生成了 Pixel 2 图像 这些值被锁定以
  • 使用 Fluent NHibernate、Oracle 10g 和 OracleClientConfiguration.Oracle10 映射 clob

    我一直在尝试使用 Fluent NHibernate 1 2 0 712 针对 Oracle 10g 映射 clob 字段 我正在使用 System Data 提供程序 因为它默认可用 并试图避免由于以前的客户端问题而添加对 ODP Net