环境

  • Framework 4.5
  • Entity Framework 6(代码优先)

  • 模型

  • 主要实体一对多 ChildEntity 关系
  • ChildEntity 一对多递归 ChildEntity 关系

  • 代码片段中的模型
    public class MainEntity
    {
        public long Id { get; set; }
        public virtual Collection<ChildEntity> ChildEntities { get; set; }
    }
    
    public class ChildEntity
    {
        public long Id { get; set; }
        public MainEntity ParentMainEntity { get; set; }
        public virtual Collection<ChildEntity> ChildEntities { get; set; }
    }
    

    注意:ChildEntity只能再次将ChildEntities级别深一层作为childeren。

    问题

    我能够坚持这种模式。这似乎工作正常。只有一个问题。当我存储具有父 ChildEntity ChildEntity 时。 MainEntity_id 字段为NULL,仅设置 ParentChildEntityId 。我要始终设置 MainEntity_Id 字段的原因是为了性能查询。

    如何强制MAINENTITY_ID字段始终在更深的级别中设置值?

    最佳答案

    第一的:

    通过将外键放在POCO之外,您会遇到麻烦。在MainEntityId中添加ChildEntity属性将使您能够将新ChildEntitiesMainEntity的关系设置。

    第二:

    var newChild =new ChildEntity();
    parentEntity.ChildEntities.Add(newChild);
    parentEntity.ParentMainEntity.ChildEntities.Add(newChild);
    

    应当根据您如何加载实体以及哪些实体将附加到或将附加到dbContext来工作。

    关于c# - 一对多和递归关系-设置力值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25105247/

    10-09 03:26