2014-01-17 2 views
1

Я создал частное поле и инициализировал его в конструкторе класса.Не удалось найти свойство ни поля

#region "Private Fields" 

private readonly IList<Ethnicity> _ethnicities; 
private readonly IList<Contact> _contacts; 
private readonly IList<Address> _addresses; 
private readonly IList<Dependent> _dependents; 
private readonly IList<InsuredType> _insuredTypes; 
private const string PrimaryEmailCode = "EML"; 
private const string SecondaryEmailCode = "EM2"; 
private const string HomePhoneCode = "HPH"; 
private const string CellPhoneCode = "CPH"; 
private const string PrimaryInsured = "PRIMARY"; 
private const string DependentInsured = "DEPENDENT"; 
private const string PermenantAddressCode = "PERM"; 
private const string MailingAddressCode = "MAIL"; 

#endregion 

#region "Constructors" 
public Insured() 
{ 
    _ethnicities = new List<Ethnicity>(); 
    _contacts = new List<Contact>(); 
    _addresses = new List<Address>(); 
    _dependents = new List<Dependent>(); 
    _insuredTypes = new List<InsuredType>(); 
} 

#endregion 

#region "Public Properties" 

public virtual IEnumerable<InsuredType> Insuredtypes 
{ 
    get { return _insuredTypes; } 
} 

public virtual string InsuredType 
{ 
    get 
    { 
     if (InsuredStatus == "ACTIVE") 
     { 

      var type = _insuredTypes.FirstOrDefault(n => n.ExpiryDate > DateTime.Now); 
      if (type != null) 
      { 
       var status = type.InsuredTypeDescription == "PRIM" ? PrimaryInsured : DependentInsured; 
       return status; 
      } 
     } 

     if (InsuredStatus == "EXPIRED" || InsuredStatus == "MERGED") 
     { 
      var type = 
       _insuredTypes.Where(n => n.ExpiryDate < DateTime.Now) 
          .OrderByDescending(n => n.ExpiryDate) 
          .FirstOrDefault(); 
      if (type != null) 
      { 
       var status = type.InsuredTypeDescription == "PRIM" ? PrimaryInsured : DependentInsured; 

       return status; 
      } 
     } 
     return string.Empty; 
    } 
} 

Когда я бегу, я получаю исключение, что _insuredTypes could not found in Insured class.

Может ли кто-нибудь указать, что я делаю неправильно?

Вот отображение Застрахованного класса

internal class InsuredMap : CacheableEntityClassMap<Entities.Insured> 
{ 
    public InsuredMap() 
    { 
     ReadOnly(); 

     Table("Insured"); 
     Id(x => x.Id, "InsuredId"); 

     Map(x => x.Gender,Convert.ToString("SexCd")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.GradDate, Convert.ToString("GradMthYrNum")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.SrId, Convert.ToString("SIDIdNum")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.SchoolId, Convert.ToString("SchoolIdTxt")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.Ssn, Convert.ToString("SocSecNumTxt")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.DateOfBirth, Convert.ToString("BirthDt")).CustomType<TrimmedStringUserType>(); 
     Map(x => x.ExpDt, ("ExpDt")); 

А вот отображение застрахованных типов

HasMany(x => x.Insuredtypes) 
    .KeyColumn("InsuredId") 
    .LazyLoad() 
    .Inverse() 
    .Cascade.All(); 
+2

Какая линия? Где вы получаете сообщение об ошибке? – RononDex

+0

Является ли это ошибкой времени компиляции? Если да, то весь ваш код в том же классе? И где живет «застрахованный» класс? – paqogomez

+0

Код, указанный выше, является частью застрахованного класса – JuniorDev

ответ

1

Похоже, у вас есть _insuredTypes свойства установлено в частное, так NHibernate не может найти это поле для сопоставления. Если вы хотите сопоставить это и иметь его также только для чтения, вам нужно посмотреть различные параметры отображения, кроме значения по умолчанию.

За дополнительной помощью - вы должны разместить свои сопоставления.

Смежные вопросы