Fluent nhibernate 使用自动映射的Fluent NHibernate映射非必需对象

Fluent nhibernate 使用自动映射的Fluent NHibernate映射非必需对象,fluent-nhibernate,automapping,Fluent Nhibernate,Automapping,我有一个复合对象设置了Project->Assessment,我的评估对象有一个ApprovedMentor对象,这不是必需的,但当我去保存项目Nhib抛出时,错误地说ApprovedUser尚未设置。但未设置它,因为它不是必填字段。我如何使用fluent自动映射设置它,可能吗 public class MentoringProject : BaseEntity { public MentoringProject() { Appraisal = new App

我有一个复合对象设置了Project->Assessment,我的评估对象有一个ApprovedMentor对象,这不是必需的,但当我去保存项目Nhib抛出时,错误地说ApprovedUser尚未设置。但未设置它,因为它不是必填字段。我如何使用fluent自动映射设置它,可能吗

 public class MentoringProject : BaseEntity
{
    public MentoringProject()
    {
        Appraisal =  new Appraisal();

    }

        [NotNullNotEmpty]
        [Length(Min=25, Max=1000)]
        public virtual string Description { get; set; }

        [Length(Min=25, Max=1000)]
        public virtual string SupportRequired { get; set; }

        [NotNullNotEmpty]
        public virtual System.DateTime? DateSubmitted { get; set; }

        [NotNullNotEmpty]
        public virtual System.DateTime? ClosingDate { get; set; }

        [NotNullNotEmpty]
        [Size(Min=1)]
        public virtual short Duration { get; set; }

        [NotNullNotEmpty]
        public virtual string Skills { get; set; }


        public virtual Appraisal Appraisal { get; set; }
}

公共类评估:基本实体
{
公众评价()
{
ShortlistedMentors=新列表();
ApprovedMentor=新用户();
学院=新的参考数据();
}
#区域基本属性
公共虚拟布尔决策{get;set;}
公共虚拟系统.DateTime?ApprovedDate{get;set;}
public virtual System.DateTime?接受日期{get;set;}
公共虚拟系统.DateTime?CompletionTargetDate{get;set;}
公共虚拟字符串拒绝原因{get;set;}
#端区
#区域导航属性
公共虚拟IList短名单入口{get;set;}
公共虚拟用户ApprovedMentor{get;set;}
公共虚拟参考数据学院{get;set;}
#端区
}

在我看来,您只需要忽略ShortlistedMentors属性,您需要在映射类中执行以下操作:

map.IgnoreProperty(p=>p.ShortlistedMentors)


这个答案发布在这里。

我想我已经解决了这个问题,当在MVC中将UI绑定到控制器时,MVC创建了一个空的用户对象,因为该对象使用nhib验证器在其上设置了必填字段,而nhib正试图创建一个新的用户对象,所以我通过检查是否有要添加的用户关系来解决这个问题,如果不是,我设置
评估。ApprovedMentor==null

用户类是实体吗?是的,它是。我将它附加到域模型中的各种对象,如menteringproject.AddedUser、menteringproject.updateuser,ShortlistedMentors也是用户对象的集合,我想我应该确保在调用save时ApprovedUser设置为null?我想要选择性设置的属性是ApprovedMentor,保存对象时,用户最初不会设置此选项,但应在初始保存后的某个时间点进行保存。
 public class Appraisal : BaseEntity
{
    public Appraisal()
    {
        ShortlistedMentors = new List<User>();
        ApprovedMentor =  new User();
        College =  new RefData();
    }

    #region Primitive Properties

    public virtual bool Decision { get; set; }

    public virtual System.DateTime? ApprovedDate { get; set; }

    public virtual System.DateTime? AcceptedDate { get; set; }

    public virtual System.DateTime? CompletionTargetDate { get; set; }

    public virtual string RejectionReason { get; set; }

    #endregion

    #region Navigation Properties

    public virtual IList<User> ShortlistedMentors { get; set; }

    public virtual User ApprovedMentor { get; set; }

    public virtual RefData College { get; set; }

    #endregion
}