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

    参考资料:
    延迟加载

    示例代码

    示例代码

  • 相关阅读:
    计算欧拉函数值
    矩阵快速幂
    约瑟夫环数学公式
    整型输出输入优化
    计算机设计第三章
    计算机设计第二章
    计算机设计
    阿里巴巴秋招2017客户端附加题
    程序设计基本概念
    c++面试题
  • 原文地址:https://www.cnblogs.com/Lulus/p/9497878.html
Copyright © 2011-2022 走看看