I need access to the ApplicationID property of the parent class to run the Nhibernate request. Running a test for this query in NUnit crashes: "BusinessObjects.IntegrationTests.CMSEligibilityInfoRepositoryTest.FetchListByApplicationIDTest: System.IndexOutOfRangeException: Invalid index 6 for this SqlParameterCollection with Count = 6."
This code collection worked fine before trying to get the ApplicationID.
My best research so far has shown that this is a display problem.
Parent class:
public abstract class MemberEligibilityInfo
{
#region Access Properties
private int _managedBenOpID;
private int _managedApplicationID;
public virtual uint ID { get; set; }
public virtual int ManagedMemberEligID { get; set; }
public virtual ulong MemberID { get; set; }
public virtual long ManagedMemberID { get; set; }
public virtual uint BenefitOptionID { get; set; }
public virtual int ManagedBenOpID
{
get { return _managedBenOpID; }
set
{
if (_managedBenOpID == value)
{
BenefitOptionID = (uint)_managedBenOpID;
return;
}
_managedBenOpID = value;
BenefitOptionID = (uint)_managedBenOpID;
}
}
public virtual string UBOI { get; set; }
public virtual uint ApplicationID { get; set; }
public virtual int ManagedApplicationID
{
get { return _managedApplicationID; }
set
{
if (_managedApplicationID == value)
{
ApplicationID = (uint)_managedApplicationID;
return;
}
_managedApplicationID = value;
ApplicationID = (uint)_managedApplicationID;
}
}
public virtual DateTime ApplicationPlanYear { get; set; }
public virtual DateTime EffectiveDate { get; set; }
public virtual DateTime TermDate { get; set; }
#endregion // Access Properties
#region Constructors
public MemberEligibilityInfo()
{
ID = 0;
MemberID = 0;
BenefitOptionID = 0;
UBOI = string.Empty;
ApplicationID = 0;
ApplicationPlanYear = DateTime.MinValue;
EffectiveDate = DateTime.MinValue;
TermDate = DateTime.MinValue;
}
#endregion // Constructors
}
Child class:
public class CMSEligibilityInfo : MemberEligibilityInfo
{
private BenefitOptionInfo _managedBenefitOptionInfo;
#region Access Properties
public virtual int Precedence { get; set; }
public virtual bool Active { get; set; }
public virtual BenefitOptionInfo ManagedBenefitOptionInfo
{
get { return _managedBenefitOptionInfo; }
set
{
if (_managedBenefitOptionInfo == value)
{
return;
}
_managedBenefitOptionInfo = value;
this.ManagedApplicationID = ManagedBenefitOptionInfo.ManagedApplicationID;
}
}
public virtual MemberInfo MemberInfo
{
get;
set;
}
#endregion // Access Properties
#region Constructors
public CMSEligibilityInfo() : base()
{
Precedence = 0;
Active = false;
}
#endregion // Constructors
}
Mapping a child class:
public class CMSEligibilityInfoMap : ClassMap<CMSEligibilityInfo>
{
public CMSEligibilityInfoMap()
{
Table("_MEI_EligPeriods");
Id(x => x.ManagedMemberEligID, "MemEligID")
.GeneratedBy.Identity();
Map(x => x.ManagedMemberID, "MemberID")
.Not.Nullable();
Map(x => x.ManagedBenOpID, "BenOpID")
.Not.Nullable();
Map(x => x.EffectiveDate, "Eff")
.Nullable();
Map(x => x.TermDate, "Term")
.Nullable();
Map(x => x.Active, "Active")
.Not.Nullable();
Map(x => x.Precedence, "Precedence")
.Nullable();
References(x => x.ManagedBenefitOptionInfo)
.Column("BenOpID")
.Not.LazyLoad()
.Cascade.None();
References(x => x.MemberInfo)
.Column("MemberID")
.Not.LazyLoad()
.Cascade.None();
}
}
The request in the repository method that causes the error:
public IList<CMSEligibilityInfo> FetchListByApplicationID(uint? appID)
{
using (var session = SessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var list = session.CreateCriteria<CMSEligibilityInfo>()
.CreateAlias("ManagedBenefitOptionInfo", "ManagedBenefitOptionInfo") .Add(Restrictions.Eq(Projections.Property("ManagedBenefitOptionInfo.ManagedApplicationID"), appID))
.List<CMSEligibilityInfo>();
transaction.Commit();
return list;
}
}
source
share