C# “获取”索引超出范围。保存NHibernate实体时,必须为非负数且小于集合的大小
我的问题是保存NHibernate实体时,伪代码如下:C# “获取”索引超出范围。保存NHibernate实体时,必须为非负数且小于集合的大小,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我的问题是保存NHibernate实体时,伪代码如下: using (var session = OpenSession()) { using (var trans = session.BeginTransaction()) { var reportTemplateVersion = new ReportTemplateVersion { ReportTemplateVersionOi
using (var session = OpenSession())
{
using (var trans = session.BeginTransaction())
{
var reportTemplateVersion =
new ReportTemplateVersion
{
ReportTemplateVersionOid = "0B89DB6-6CC1-460A-B913-10AFCF0C868 ",
Description = "Testing",
TextID_Description = "144bbdda-3249-4c51-8371-3c7ee551b75b ",
ChangeTimeStamp = DateTime.Now,
HasBeenUsed = false,
PartFactory = "010",
ObjVersion = 1,
Version = 1,
ReportTemplateOid = "93822BF-B275-44A5-9F29-AF65025C03C ",
CnSubIn = 1,
CnoteIn = "15214",
CnSubOut = null,
CnoteOut = null
};
session.Save(reportTemplateVersion)
trans.Commit(); <--- here I get the exception
}
}
我运行的是NHibernate 4.03,运行的是Oracle 12。这正如我预期的那样,是一个映射问题,但很难找到 问题在于相关属性:
public virtual CnSubGroup CnSubGroupOut { get; set; }
public virtual CnSubGroup CnSubGroupIn { get; set; }
CnSubGroup实体还具有版本映射,当NHibernate刷新其状态并尝试加载这些实体时,会发生错误
当我检查CnSubGroup的映射时,我发现以下内容:
References(x => x.MainCnSubGroup)
.Class<CnSubGroup>()
.Access.Property()
.Cascade.None()
.LazyLoad()
.Columns("MAINCNOTE", "MAINCNSUB", "PARTFACTORY");
NHibernate不支持使用复合键插入或更新引用,所有这些引用都应映射为只读:
References(x => x.MainCnSubGroup)
.Class<CnSubGroup>()
.Access.Property()
.Cascade.None()
.LazyLoad()
.Not.Insert()
.Not.Update()
.Columns("MAINCNOTE", "MAINCNSUB", "PARTFACTORY");
更改代码后,错误消失了。这正如我预期的那样,是一个映射问题,但很难找到 问题在于相关属性:
public virtual CnSubGroup CnSubGroupOut { get; set; }
public virtual CnSubGroup CnSubGroupIn { get; set; }
CnSubGroup实体还具有版本映射,当NHibernate刷新其状态并尝试加载这些实体时,会发生错误
当我检查CnSubGroup的映射时,我发现以下内容:
References(x => x.MainCnSubGroup)
.Class<CnSubGroup>()
.Access.Property()
.Cascade.None()
.LazyLoad()
.Columns("MAINCNOTE", "MAINCNSUB", "PARTFACTORY");
NHibernate不支持使用复合键插入或更新引用,所有这些引用都应映射为只读:
References(x => x.MainCnSubGroup)
.Class<CnSubGroup>()
.Access.Property()
.Cascade.None()
.LazyLoad()
.Not.Insert()
.Not.Update()
.Columns("MAINCNOTE", "MAINCNSUB", "PARTFACTORY");
更改代码后,错误消失了。我收到了相同的错误消息,这也是一个列映射问题 我的情况是,我重复定义了一个在概要中已经定义的属性 这个错误的根本原因是Id的参数索引,我认为在大多数情况下,它超出了参数集合
public class A()
{
public virtual string aaa{get;set;}
public virtual string bbb{get;set;} //bbb is defined in the BBB already!!!
public virtual BBB bigB{get;set;}
}
public class BBB(){
public virtual string bbb{get;set;}
}
我收到了相同的错误消息,这也是一个列映射问题 我的情况是,我重复定义了一个在概要中已经定义的属性 这个错误的根本原因是Id的参数索引,我认为在大多数情况下,它超出了参数集合
public class A()
{
public virtual string aaa{get;set;}
public virtual string bbb{get;set;} //bbb is defined in the BBB already!!!
public virtual BBB bigB{get;set;}
}
public class BBB(){
public virtual string bbb{get;set;}
}