2010-02-16 86 views
7

我用流利的NHibernate的一個問題:錯誤是「無法解析屬性MailHeader類MailHeader的功能NHibernate:無法解析屬性

的問題是關係到實體內部的集合。‘MailHeader’,如果我刪除異常消失的集合,但我想這些集合 感謝的提前

所涉及的實體有:!

public class MailHeader : Entity 
{ 
    public MailHeader() 
    { 
     MailRecipientUsers = new List<MailRecipientUser>(); 
     MailsDeleted = new List<MailDeleted>(); 

    } 

    [Required] 
    public virtual string Subject { get; set; } 
    public virtual IList<MailRecipientUser> MailRecipientUsers { get; protected set; } 
    public virtual IList<MailDeleted> MailsDeleted { get; protected set; } 

} 

public class Mail : Entity 
{ 
    public Mail() 
    { 
     Creation = DateTime.Now; 
     MailHeader = new MailHeader(); 
    } 

    [Required] 
    public virtual string BodyText { get; set; } 
    [Required] 
    public virtual MailHeader MailHeader { get; set; } 

    public virtual Mail Parent { get; set; } 

    [Required] 
    public virtual User From { get; set; } 


    public virtual Mail Child { get; set; } 

    [DataType(DataType.Date)] 
    public virtual DateTime Creation { get; set; } 
    //[Required] 
    //public virtual MailType MailType { get; set; } 
} 

public class MailRecipientUser : Entity 
{ 
    [Required, DomainSignature] 
    public virtual MailHeader MailHeader { get; set; } 

    [Required, DomainSignature] 
    public virtual User User { get; set; } 

} 
public class MailDeleted : Entity 
{ 
    public MailDeleted() 
    { 
    } 

    [DomainSignature,Required] 
    public virtual MailHeader MailHeader { get; set; } 
    [DomainSignature, Required] 
    public virtual User User { get; set; } 

} 

映射:

public class MailHeaderMap : IAutoMappingOverride<MailHeader> 
{ 
    public void Override(AutoMap<MailHeader> mapping) 
    { 
     mapping.HasMany(x => x.MailRecipientUsers) 
      .Inverse() 
      .Cascade.AllDeleteOrphan(); 

     mapping.HasMany(x => x.MailsDeleted) 
      .Inverse() 
      .Cascade.AllDeleteOrphan(); 

    } 
} 

public class MailMap : IAutoMappingOverride<Mail> 
{ 
    public void Override(AutoMap<Mail> mapping) 
    { 
     mapping.References(x => x.From); 
     mapping.References(x => x.Parent); 
     mapping.References(x => x.MailHeader); 

     mapping.HasOne(e => e.Child) 
      .WithForeignKey() 
      .PropertyRef(a => a.Parent) 
      .Cascade.All(); 
    } 
} 
public class MailRecipientUserMap : IAutoMappingOverride<MailRecipientUser> 
{ 
    public void Override(AutoMap<MailRecipientUser> mapping) 
    { 
     mapping.References(x => x.MailHeader); 
     mapping.References(x => x.User); 
    } 
} 
public class MailDeletedMap : IAutoMappingOverride<MailDeleted> 
{ 
    public void Override(AutoMap<MailDeleted> mapping) 
    { 
     mapping.References(x => x.MailHeader); 
     mapping.References(x => x.User); 
    } 
} 
+0

嘗試更改'公共虛擬MailHeader MailHeader {獲取;組; }'到'公共虛擬MailHeader標題{get;組; }'並更新你的引用來查看這個錯誤是否消失。 –

回答

1

嘗試在MailHeader上再次公佈setter。

相關問題