2010-02-16 89 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。

相关问题