2016-06-28 5 views
0

У меня есть 2 объекта, и все работает отлично, за исключением того, что NHibernate не загружает свойство FieldGroupItems во второй объект объекта. Я подозреваю, что это связано с тем, что между двумя объектами существует круговая зависимость. Мне действительно нужны как ChildGroups, так и FieldGroupItems. Если я удаляю дочерние группы, то файлы FieldGroupItems загружаются в порядке. Есть ли способ получить то, что я хочу. Единственный способ, с помощью которого я могу думать, - использовать коллекции Guid вместо коллекций объектов, чтобы хранить только идентификаторы и извлекать данные вручную из кода. Любая помощь приветствуется.Свободные круговые зависимости nhibernate

public class FieldGroupItemInstance : TenantBaseEntity 
{ 
    public virtual Guid ItemId { get; set; } //ID from the database to update actual object later 
    public virtual bool IsTemporaryId { get; set; } //true if field group is new (doesn't exist in system) 
    public virtual IList<QuestionnaireInstanceField> Fields { get; set; } 
    public virtual IList<QuestionnaireFieldGroupInstance> ChildGroups { get; set; } 

    public FieldGroupItemInstance() 
    { 
     Fields = new List<QuestionnaireInstanceField>(); 
     ChildGroups = new List<QuestionnaireFieldGroupInstance>(); 
    } 
} 

public class QuestionnaireFieldGroupInstance : TenantBaseEntity 
{ 
    public virtual Guid FieldGroupTemplateId { get; set; } 
    public virtual IList<FieldGroupItemInstance> FieldGroupItems { get; set; } //Each repeated group of instances 
    //public virtual FieldGroupItemInstance Parent { get; set; } 

    public QuestionnaireFieldGroupInstance() 
    { 
     FieldGroupItems = new List<FieldGroupItemInstance>(); 
    } 
} 

ответ

0

Если вы используете fluentnhibernate для отображения своих объектов, это должно сработать. Просто обратите внимание на опции Cascade.

public class FieldGroupItemInstanceMap() 
{ 
     public FieldGroupItemInstanceMap() 
     { 
       Table("FieldGroupItemInstance"); 

       HasManyToMany(x => x.ChildGroups) 
         .Table("FieldGroupItemInstance_QuestionnaireFieldGroupInstance") 
         .ParentKeyColumn("IdFieldGroupItemInstance") 
         .ChildKeyColumn("IdQuestionnaireFieldGroupInstance") 
         .Cascade.None(); 
     } 
} 

public class QuestionnaireFieldGroupInstanceMap() 
{ 
     public QuestionnaireFieldGroupInstanceMap() 
     { 
       Table("QuestionnaireFieldGroupInstance"); 

       HasManyToMany(x => x.FieldGroupItems) 
         .Table("FieldGroupItemInstance_QuestionnaireFieldGroupInstance") 
         .ParentKeyColumn("IdQuestionnaireFieldGroupInstance") 
         .ChildKeyColumn("IdFieldGroupItemInstance") 
         .Cascade.None(); 
     } 
}  
Смежные вопросы