C# “获取”索引超出范围。保存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

我的问题是保存NHibernate实体时,伪代码如下:

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;}
}