【问题标题】:fluent nhibernate circular dependencies流畅的休眠循环依赖
【发布时间】:2016-06-28 16:15:48
【问题描述】:

我有 2 个实体,一切正常,除了 NHibernate 不会在对象的第二个实体中加载 FieldGroupItems 属性。 我怀疑这是因为这两个实体之间存在循环依赖关系。 我真的需要 ChildGroups 和 FieldGroupItems。如果我删除 ChildGroups 比 FieldGroupItems 加载正常。 有没有办法得到我想要的。我能想到的唯一方法是使用 Guid 集合而不是对象集合来仅存储 Id 并从代码中手动获取数据。 任何帮助表示赞赏。

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

【问题讨论】:

    标签: c# .net nhibernate fluent-nhibernate


    【解决方案1】:

    如果您使用 fluentnhibernate 来映射您的实体,这应该可以工作。只需注意级联选项即可。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 2011-11-15
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多