zoukankan      html  css  js  c++  java
  • EntityFrameworkCore 单表树状结构配置

    数据结构

    public class TreeNode
    {
        [Key]
        public long Id { get; set; }
        public string NodeName { get; set; }
        public long? ParentId { get; set; }
        public virtual TreeNode Parent { get; set; }
        public virtual ICollection<TreeNode> Children { get; set; }
    
    }

    配置

    //单表树状结构
    modelBuilder.Entity<TreeNode>()
        //主语this,拥有Children
        .HasMany(x => x.Children)
        //主语Children,每个Child拥有一个Parent
        .WithOne(x => x.Parent)
        //主语Children,每个Child的外键是ParentId
        .HasForeignKey(x => x.ParentId)
        //这里必须是非强制关联,否则报错:Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
        .OnDelete(DeleteBehavior.ClientSetNull);

    数据查询需要使用延迟加载

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder
            .UseLazyLoadingProxies()
            .UseSqlServer(myConnectionString);

    或者

        .AddDbContext<BloggingContext>(
            b => b.UseLazyLoadingProxies()
                  .UseSqlServer(myConnectionString));

    参考资料:
    延迟加载

    示例代码

    示例代码

  • 相关阅读:
    Pascal's Triangle II
    Pascal's Triangle
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Populating Next Right Pointers in Each Node
    path sum II
    Path Sum
    [转载]小波时频图
    [转载]小波时频图
    [转载]Hilbert变换及谱分析
  • 原文地址:https://www.cnblogs.com/luomingui/p/11964990.html
Copyright © 2011-2022 走看看