NHibernate 错误消息:此 SqlParameterCollection 的索引 3 无效,计数 = 3

2024-01-24

I have a test database design like this: enter image description here

以下是伪代码:

//BhillHeader
public class BillHeader
{
    public BillHeader()
    {
        BillDetails = new List<BillDetail>();
    }
    public virtual int BillNo { get; set; }
    public virtual IList<BillDetail> BillDetails { get; set; }
    public virtual decimal Amount { get; set; }

    public virtual void AddDetail(BillDetail billdet)
    {
        BillDetails.Add(billdet);
    }
}  

//BillHeader Map
public class BillHeaderMap : ClassMap<BillHeader>
{

    public BillHeaderMap()
    {
        Table("BillHeader");
        LazyLoad();
        Id(x => x.BillNo).GeneratedBy.Identity().Column("BillNo");
        Map(x => x.Amount).Column("Amount").Not.Nullable();
        HasMany(x => x.BillDetails).KeyColumn("BillNo").Cascade.All().Inverse();
    }
}  

//BillDetail
public class BillDetail
{
    public BillDetail() { }
    public virtual int BillID { get; set; }
    public virtual int SeqNo { get; set; }
    public virtual BillHeader BillHeader { get; set; }
    public virtual decimal Amt { get; set; }

    public override bool Equals(object obj)
    {
        var other = obj as BillDetail;

        if (ReferenceEquals(null, other)) return false;
        if (ReferenceEquals(this, other)) return true;

        return this.BillID == other.BillID &&
            this.SeqNo == other.SeqNo;
    }

    public override int GetHashCode()
    {
        unchecked {
            int hash = GetType().GetHashCode();
            hash = (hash * 31) ^ SeqNo.GetHashCode();
            hash = (hash * 31) ^ BillID.GetHashCode();

            return hash;
        }
    }
}


//BillDetail Map
public class BillDetailMap : ClassMap<BillDetail>
{

    public BillDetailMap()
    {
        Table("BillDetail");
        LazyLoad();
        CompositeId().KeyProperty(x => x.BillID, "BillNo").KeyProperty(x => x.SeqNo, "SeqNo");
        References(x => x.BillHeader).Column("BillNo");
        Map(x => x.Amt).Column("Amt").Not.Nullable();
    }
}


//-----------------------------------------------------------------------------------------------------------------------------

//Program
public createBillNo()
{
    var sessionFactory = CreateSessionFactory();
    using (var session = sessionFactory.OpenSession()) {
        using (var sqlTrans = session.BeginTransaction()) {

            BillHeader billNo1 = new BillHeader() { Amount = 2500.00M};
            BillDetail bh11 = new BillDetail() { SeqNo = 1, Amt = 200.00M };
            BillDetail bh12 = new BillDetail() { SeqNo = 2, Amt = 300.00M };
            BillDetail bh13 = new BillDetail() { SeqNo = 3, Amt = 500.00M };

            AddBillDetailsToBillHeader(billNo1, bh11, bh12, bh13);
            session.SaveOrUpdate(billNo1); 
            sqlTrans.Commit();
        }
    }
}

private void AddBillDetailsToBillHeader(BillHeader billHeader, params BillDetail[] billDetails)
{
    foreach (var billdet in billDetails) {
        billHeader.AddDetail(billdet);
        billdet.BillHeader = billHeader;
    }
}

当我运行此程序时,我收到以下异常:

此 SqlParameterCollection 的索引 3 无效,且 Count=3

请帮我解决这个问题。


最有可能是因为列“BillNo”被映射两次,它尝试为 1 列添加 2 个参数,因此出现 outOfRange 错误。将引用移动到复合键中

CompositeId()
    .KeyReference(x => x.BillHeader, "BillNo")
    .KeyProperty(x => x.SeqNo, "SeqNo");
// References(x => x.).Column("BillNo");  <-- Remove
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate 错误消息:此 SqlParameterCollection 的索引 3 无效,计数 = 3 的相关文章

  • NHibernate 会话线程安全

    我已经使用 NHibernate 一段时间了 并且不时发现如果我尝试同时请求两个页面 或尽可能接近 偶尔会出错 所以我认为这是因为我的会话管理不是线程安全的 我以为这是我的课 所以我尝试使用与这篇博客文章不同的方法http pwigle w
  • 复合键流畅的nhibernate

    一个人可以在流利的休眠状态下做到这一点吗 当我尝试保存时 我提供配置文件和场景对象 并且 id 不为空 Nhibernate 抱怨它不能为 ProfileID 列确保 NULL Fluent Nhibernate 不知道如何获取 Profi
  • Postgresql 上的 Castle Activerecord 错误是“关系不存在”?

    ActiveRecord 映射 ActiveRecord JobTitle Schema public public class JobTitle ActiveRecordValidationBase
  • NHibernate 应如何更新映射为版本的属性

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

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

    如何让 NHibernate 自动生成表的唯一 ID ID 可以是任意的long值 只要每个值仅使用一次 我当前的映射如下所示
  • 非法尝试将集合与两个开放会话关联 流畅的 nhibernate

    我有这个异常 非法尝试将集合与两个打开的会话关联 每次我保存包含子集合的实体时都会引发该异常 我用谷歌搜索一下 我发现在调用保存时我打开了两个或多个会话 但我确定我只使用了一个会话 我哪里做错了 我该如何解决这个问题 注意 我使用的是 MV
  • 从实体获取单列

    如何从查询中获取单个列而不是整个对象 我可以这样做来获取整个对象 但我想要的只是名称 IList
  • 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 看起来很灵活
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 如何判断一个引用的对象是否可以删除?

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

    假设以下场景 class Project public Job Job class Job public Name 假设我想使用 Criteria API 搜索其 Job 名称为 sumthing 的所有项目 我可以使用 CreateAli
  • 如何使用 Fluent NHibernate 自动映射来映射字典?

    我有一个像这样的实体 public class Land public virtual IDictionary
  • nhibernate:读写字符串列表

    我知道我可以使用 nhibernate 读取写入字符串列表 如下所示 HasMany x gt x Attachments KeyColumn RowId Table PostTable Element PostKey 但这会创建一个额外的
  • NHibernate - 无法延迟初始化角色集合

    我有以下看似简单的场景 但我对 NHibernate 仍然很陌生 当尝试在我的控制器上加载以下模型以进行编辑操作时 控制器的编辑操作 public ActionResult Edit Guid id return View reposito
  • 我应该检查代码中的数据库约束还是应该捕获数据库抛出的异常

    我有一个将数据保存到名为 作业 的表中的应用程序 Jobs 表有一个名为 Name 的列 该列具有 UNIQUE 约束 名称列不是主键 我想知道在尝试保存 更新新条目之前是否应该自己检查重复条目 或者最好等待数据访问层抛出异常 如果这个应用
  • 如何在 NHibernate 中使用 READPAST 提示?

    有什么办法可以让 NHibernate 使用吗the READPAST hint https learn microsoft com en us sql t sql queries hints transact sql table从 SQL
  • NHibernate代理异常

    我是新 NHibernate 我正在编写一个简单的应用程序 其中的客户类包含 id 和名称 并使用 nhibernate 将对象存储到数据库中 但我得到以下信息 未配置 ProxyFactoryFactory 使用可用的 NHibernat
  • 急于获取引用时重复(多对一)

    首先 是的 我正在使用 DistinctRootEntityResultTransformer 我有以下 Fluent NHibernate 映射 public FirstObjectMap Id x gt x Id HasMany

随机推荐

  • R:计算两个点层之间的最短距离

    我需要计算两个点矩阵之间的最短距离 我是 R 新手 不知道如何做到这一点 这是我用来调用数据并将其转换为点的代码 library dismo laurus lt gbif Laurus nobilis locs lt subset laur
  • 由于 order by 超出了 bigquery 资源限制

    当我运行以下查询时 出现 超出资源限制 错误 如果我删除最后一行 order by 子句 它会起作用 SELECT id INTEGER position CASE WHEN fallback 0 THEN 2 ELSE 1 END AS
  • 网站目录之外的参考文件

    如何引用网站根目录之外的文件 例如我的网站位于 C dev TestSite 我正在使用 ASP NET 和 XSP Web 应用程序将使用 mod mono 部署在 Apache 上 我在 C images 中有图像 我想这样做 img
  • Unicode HTML 标题在 IE、Chrome 中显示为框

    这是我的 HTML 另请参阅http www caudillweb com test test htm http www caudillweb com test test htm h1 日历 h1 以下是我分别在 IE Chrome 和 F
  • 如何在 TensorFlow 中水平连接两个张量?

    我有 2 个形状张量 100 4 and 100 2 我想在 TensorFlow 中执行串联操作 类似于np hstack 在 NumPy 中 这样输出的形状 100 6 有 TensorFlow 函数可以做到这一点吗 您可以使用tf c
  • 如何使用vimeo高级API显示视频

    我使用 Vimeo simple API 来显示我网站上某个频道的视频 但您可能知道 它有一个限制 我想知道您能否给我一个如何使用高级 API 的示例 我已阅读文档 但我只是不知道如何使用这些方法 显然我不是 php 专家 因此 如果您能给
  • WPF 列表框按钮所选项目

    我有一个带有一些文本块和一个按钮的列表框 在按钮的代码隐藏中 它调用一个传递当前选定的列表框项目的方法 这非常有用 问题是 当我选择一个项目 然后单击另一个项目上的按钮时 它不会更新 SelectedItem 属性 有没有办法 Xaml 或
  • 如何在C++中调用所有基类的复制构造函数来复制钻石继承中的大多数派生类对象?

    考虑下面的代码 include
  • 需要图像编辑库的建议

    我正在尝试创建一个基于 WPF 的应用程序 该应用程序将允许用户编辑照片并提供以下功能 增加 减少亮度 Crop 复古外观 还有更多 我还期待提供更多奇特的功能 例如 构图 打印到 T 恤 但这些功能的优先级较低 有相关的开源库吗 P S
  • 在 C 中使用 #define 定义路径

    我想定义这样的路径 define PATH abc xyz lmn 该 PATH 是一个包含文件 foo1 foo2 foo3 foo115 的目录 如何在 open 调用中使用这个 define 来打开 foo1 foo2 foo115
  • 查询Windows显示缩放比例

    I want to query the Windows display scaling setting programmatically In this case I want it to return 125 since I config
  • 如何使用斯坦福 CoreNLP 对预标记文本进行 NER 和 POS 标记?

    我在我的应用程序中使用斯坦福大学的 CoreNLP 命名实体识别器 NER 和词性 POS 标记器 问题是我的代码预先标记了文本 然后我需要对每个标记进行 NER 和 POS 标记 但是 我只能找到如何使用命令行选项来执行此操作 而不能以编
  • 没有冲突的合并是否等于没有冲突的rebase?

    这是正确的吗git merge当且仅当相应的git rebase会在没有冲突的情况下成功吗 不 事实上有一个简单的情况 合并工作正常 但变基却不行 o A lt mainline B C C lt branch where C是一个与以下冲
  • 数据绑定错误 - 找不到访问器

    我用谷歌搜索但仍然没有找到适合我的解决方案 这是我的 xml
  • 带标志的数组

    假设我有一个布尔标志数组 它会根据条件设置为 true 或 false 假设索引 1 2 6 已设置 所有其他标志均未设置 我需要调用functionA 如果索引 2 3 5 已设置并且所有其他标志未设置 我需要调用functionB 除了
  • 如何使角度组件与窗口的实际尺寸全屏显示

    我正在使用 Angular 在我的 app component html 中我有一些像这样的组件
  • 在c语句中计算token

    以下 C 语句中的标记数 printf i d i x i i 我认为这里有 12 个令牌 但我的答案是错误的 谁能告诉我如何找到上述 C 语句中的标记 PS 我知道标记是编译器不会分解为组件元素的源程序文本 据我了解C代码解析 标记是 总
  • 在 UITableView 中取消选择行时如何从数组中删除项目

    我正在尝试从 a 中捕获选定的项目UITableView并将它们保存到一个新数组中 以下代码通过在点击行时添加项目来创建新数组 但它不会在取消选择行时删除项目 如何从列表中删除项目newFruitList当a中的一行UITableView被
  • 在 Ant build.xml 中使用 Compass 编译 SASS

    有谁知道如何使用 JRuby 和 Compass 模块在 build xml 中编译 SASS scss 文件 我可以在 sass 独立安装中使用 Sass Exec 模块 通过以下方式从 scss 编译为 css
  • NHibernate 错误消息:此 SqlParameterCollection 的索引 3 无效,计数 = 3

    I have a test database design like this 以下是伪代码 BhillHeader public class BillHeader public BillHeader BillDetails new Lis