Я использую 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. Я понятия не имею, что может быть неправильно.
Можете ли вы добавить свои классы к вопросу? –
Вы проверили, что объекты «Вопрос» и «Тест» имеют правильные ссылки друг на друга до их сохранения? –
@DavidOsborne, что вы имеете в виду? Я вставляю его EDIT: PASTED – Karolina