环保公司网站建设内容,做单页网站的软件,大连百度网络推广,wordpress 树莓派一、什么是自引用
1.在常见的树状目录中#xff0c;其结构如下#xff1a;
每一个菜单可能有父级菜单#xff0c;也可能有子菜单。但是无论是哪一级菜单#xff0c;他们都是同属于菜单对象。将这个菜单对象使用代码进行描述#xff1a;
在上面的代码中#xff0c;主…一、什么是自引用
1.在常见的树状目录中其结构如下
每一个菜单可能有父级菜单也可能有子菜单。但是无论是哪一级菜单他们都是同属于菜单对象。将这个菜单对象使用代码进行描述
在上面的代码中主体实体是Menus但是其依赖实体依旧还是Menus且导航属性Menus与ListMenus均指向自己也就是“自己引用自己”在数据库中形成了“自连接”关系。此之谓“自引用”。
二、自引用代码环境搭建
1.在EF Core中对这个实体的关系进行详细配置即一个节点只能指向一个父节点但是可以含有若干个子节点。注意Parent在这里可以为空。其配置类如下
将实体类型显式的标记出来
配置DbContext
然后直接执行Add-Migration生成对应的Migration文件。紧接着执行Update-database会报如下错误(EF Core 6.0本例是EF Core 8.0)
解决方案是找到刚刚生成的Migrations文件夹中对应的迁移文件找到constraints配置项删掉onDelete配置
然后保存并编译代码重新执行Update-database
迁移成功。打开数据库查看外键属性可以看到这个外键由Menus指向Menus即自引用。
三、测试自引用关系
1.新增菜单实体
若没有将外键Menus Parent声明为可空
执行
解决方案将外键Menus声明为可空即可避免 运行 数据库 2.递归打印子节点
运行