EntityFrameworkCore 单表树状结构配置

it2022-06-24  79

数据结构

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

参考资料:https://docs.microsoft.com/zh-cn/ef/core/querying/related-data#lazy-loading

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreWebsite.EntityFramework/WebsiteDbContext.cs

转载于:https://www.cnblogs.com/Lulus/p/9497878.html

相关资源:DirectX修复工具V4.0增强版

最新回复(0)