Dan*_*ams 3 nhibernate fluent-nhibernate
在FNH中调用更新时,我收到以下错误:
指数超出范围.必须是非负数且小于集合的大小.\ r \nParameter name:index
这可能是一些不好的映射.诊断这个的最佳方法是什么?我真的很想看到它试图发布的UPDATE.
这是代码:
public void Update<T>(IEnumerable<T> values)
{
foreach (var value in values)
{
using (var tx = Session.BeginTransaction())
{
this.Update(value, tx);
tx.Commit();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你可以发布你的映射它会有所帮助,但通常这会在你使用Fluent References语法映射Parent> Child关系时发生,并且还包含相同关系的Foreign Key列的Mapping.
这会导致nHibernate将字段映射两次,从而导致您遇到的错误.
当您使用References语法时,nHibernate将为您处理Foreign Key列,但是如果您仍然希望它在您的对象中,只需更改该字段的映射定义即可ReadOnly()选择解决问题.如果您不需要它,可以完全从映射定义中删除.
要严格回答问题(诊断自己),我建议2个选项:
log4Net并配置nHibernate以将其所有SQL语句输出到记录器组件.这样,您将在日志文件中看到违规语句,并能够隔离问题.| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |