2016-12-09 13 views
0

Я использую NHibernate и у меня есть проблема, потому что при попытке сохранить в базу данных он генерирует исключение:не-нуль свойства ссылается на нулевое или переходное значении

не-нулевое свойство ссылается на нуль или переходное значение NHibernate.Entities.Question.Test

Как его изменить?

public class TestMap: ClassMap<Test> 
{ 
    public TestMap() 
    { 
     Table("Test"); 

     Id(x => x.Id) 
      .GeneratedBy.Identity() 
      .Column("Id"); 

     Map(x => x.Name) 
      .Column("Name") 
      .Not.Nullable(); 

     HasMany(x => x.Question).KeyColumn("TestId") 
     .Cascade.All() 
     .Not.LazyLoad(); 
    } 
} 

public class QuestionMap: ClassMap<Question> 
{ 
    public QuestionMap() 
    { 
     Table("Question"); 

     References(x => x.Test) 
      .Column("TestId") 
      .Not.Nullable() 
      .Cascade.SaveUpdate() 
      .Not.LazyLoad(); 

     Id(x => x.Id) 
      .GeneratedBy.Identity() 
      .Column("Id"); 

     Map(x => x.QuestionContent) 
      .Column("QuestionContent") 
      .Not.Nullable(); 

     HasMany(x => x.Answer) 
      .KeyColumn("QuestionId") 
      .Cascade.All() 
     //.Cascade.SaveUpdate() 
     .Not.LazyLoad(); 
    } 
} 

EDIT: класс

public class Question: Entity 
{ 
    public Question() 
    { 
     Answer = new List<Answer>(); 
    } 
    public virtual string QuestionContent { get; set; } 
    public virtual IList<Answer> Answer { get; set; } 
    public virtual Test Test { get; set; } 

    public virtual void AddAnswer(Answer answer) 
    { 
     answer.Question = this; 
     Answer.Add(answer); 
    } 
} 

public class Test : Entity 
{ 
    public Test() 
    { 
     Question = new List<Question>(); 
    } 

    public virtual string Name { get; set; } 
    public virtual IList<Question> Question { get; set; } 

    public virtual void AddQuestion(List<Question> questions) 
    { 
     foreach (var question in questions) 
     { 
      question.Test = this; 
      Question.Add(question); 
     } 
    } 
} 

Вопрос имеет ответ, ответ GivenAnswer и GivenAnswer имеет SolvedTest. Я понятия не имею, что может быть неправильно.

+0

Можете ли вы добавить свои классы к вопросу? –

+0

Вы проверили, что объекты «Вопрос» и «Тест» имеют правильные ссылки друг на друга до их сохранения? –

+0

@DavidOsborne, что вы имеете в виду? Я вставляю его EDIT: PASTED – Karolina

ответ

-1

Убедитесь, что questionEntity имеет свой Test объект недвижимости, указанный в таблице Not.Nullable().

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

  • Нет связанных вопросов^_^