开发者

Fluent NHibernate Mapping Non Required Object using Automapping

I have a composite object set up Project->Appraisal, My appraisal object has a ApprovedMentor object which is not required but when i go to save project Nhib throws and error to say that ApprovedUser has not been set. but its not set because its not a required field. How do i set up this using fluent auto mapping, is it possible?

 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; }

}

 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 Co开发者_StackOverflow社区llege { get; set; }

    #endregion
}


It looks to me that you just want to ignore the ShortlistedMentors property which you need to do in your mapping class like this:

map.IgnoreProperty(p => p.ShortlistedMentors);

This answer was posted in this question.


I think i have solved this, when binding the UI to the controller in MVC, MVC creates an empty User object and because that object has required fields set on it using nhib validator and nhib was trying to create a new user object, I got round this by checking if there is a user realtionship to add, if not I set the Appraisal.ApprovedMentor==null

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜