Свободное владение Nhibernate - делайте рекомендации только со стороны детей

Я имею Survey тот HasManyQuestion тот HasManyOption,
Я хочу создать ссылку из Option в Survey,
Проблема в том, что каждый раз, когда я хочу создать new Survey со всеми своими детьми, мне нужно на всех survey.Questions и цикл на всех survey.Questions.Options и поставь каждый Option Survey (или же Nhibernate создаст new Survey для каждого Option)
** я не хочу иметь IList<Option> в опросе, если я это сделаю, это решит проблему, но это будет тяжело и непригодно для использования **

public class SurveyMap : ClassMap<Survey>
    {
        public SurveyMap()
        {
           Id(x => x.Id).GeneratedBy.Identity();
            HasMany(x => x.Questions).KeyColumn("SurveyId").Inverse().AsBag().Not.LazyLoad().Cascade.SaveUpdate();
        }
    }

    public class QuestionMap : ClassMap<Question>
    {
        public QuestionMap()
        {
           Id(x => x.Id).GeneratedBy.Identity();
            HasMany(x => x.Options).KeyColumn("QuestionId").Inverse().AsBag().Cascade.SaveUpdate();
        }
    }

    public class OptionMap : ClassMap<Option>
    {
        public OptionMap()
        {
            Id(x => x.Id).GeneratedBy.Identity();
            References(x => x.Survey).Column("SurveyId").Cascade.All();
        }
    }

1 ответ

Возможно, было бы лучше отделить ваши проблемы отчетности от проблем бизнес-логики ваших приложений. Используйте сопоставления, которые у вас уже есть, для бизнес-логики ваших приложений и предоставьте другой интерфейс для данных для ваших требований к отчетности. Для этого вы можете использовать HQL, SQL или новые объекты и карты.

Другие вопросы по тегам