gpt4 book ai didi

nhibernate - 在 nHibernate : "Index was out of range." 中更新时出错

转载 作者:行者123 更新时间:2023-12-04 01:52:33 24 4
gpt4 key购买 nike

在 FNH 中调用更新时,出现以下错误:

索引超出范围。必须为非负且小于集合的大小。\r\n参数名称:index

这可能是一些错误的映射。诊断此问题的最佳方法是什么?我真的很想看到它试图发布的更新。

代码如下:

    public void Update<T>(IEnumerable<T> values)
{
foreach (var value in values)
{
using (var tx = Session.BeginTransaction())
{
this.Update(value, tx);
tx.Commit();
}
}
}

最佳答案

如果您可以发布您的映射,它会有所帮助,但通常这发生在您使用 Fluent References 语法 AND 映射 Parent > Child 关系时也包含一个 Mapping对于相同关系的外键列。

这会导致 nHibernate 两次映射字段并导致您遇到的错误。

当您使用 References 语法时,nHibernate 会为您处理外键列,但是如果您仍然希望它在您的对象中,只需更改该字段的映射定义以具有 ReadOnly()解决问题的选项。如果您不需要它,您可以从您的映射定义中完全删除。

要严格回答所问的问题(诊断自己),我会建议 2 个选项:

  • 免费选项 - 安装 log4Net 并配置 nHibernate 以将其所有 SQL 语句输出到记录器组件。通过这种方式,您将在日志文件中看到违规语句并能够隔离问题。
  • 成本选项 - 下载和试用/购买 nHibernate Profiler通过 hibernate 犀牛。它将为您提供 nHibernate 发送到数据库的所有 SQL 语句的完整详细信息,以及改进的建议或警告,并且所有这些都在一个漂亮的 GUI 中。

关于nhibernate - 在 nHibernate : "Index was out of range." 中更新时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com