日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

EF架构~单表一对多集合的插入(树型结构)

發布時間:2025/4/5 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EF架构~单表一对多集合的插入(树型结构) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單表一對多關系很常見,它是一種樹形結構,如系統菜單表,部門表,分類表,這些都可以做成單表一對多關系,而這些表做成一對多關系后,如果通過EntityFramework進行插入操作時,會很方便,EF會自動為我們確實上級ID,對于操作的性能也是可以接受的,與數據庫建立一次鏈接,發一批指定,這是我們可以接受的,雖然在性能上不是最佳的,但綜合對比來看,它即是最佳的。(結合對比=程序性能+開發人員工時+程序擴展性+程序可讀性)

OK,我們以菜單表為例,說一下這個菜單表初始化的過程

對于菜單實體的賦值,看一下代碼:

var menu = new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 0,MenuName = form["MenuName"] ?? "",Operator = string.Empty,ParentID = null,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 1,MenuName ="系統管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{#region 二級菜單new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 2,MenuName ="角色管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{new WebManageMenus{About = string.Empty,LinkUrl = "/Role/Create",MenuLevel = 3,MenuName ="新建角色",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now},new WebManageMenus{About = string.Empty,LinkUrl = "/Role/Index",MenuLevel = 3,MenuName ="管理角色",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now} }}, #endregion#region 二級菜單new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 2,MenuName ="部門管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{new WebManageMenus{About = string.Empty,LinkUrl = "/Department/Index",MenuLevel = 3,MenuName ="管理部門",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now} }}, #endregion#region 二級菜單new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 2,MenuName ="菜單管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{new WebManageMenus{About = string.Empty,LinkUrl = "/Menu/Index",MenuLevel = 3,MenuName ="管理菜單管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now} }}, #endregion#region 二級菜單new WebManageMenus{About = string.Empty,LinkUrl = string.Empty,MenuLevel = 2,MenuName ="員工管理",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now,WebManageMenus1 = new List<WebManageMenus>{new WebManageMenus{About = string.Empty,LinkUrl = "/User/Create",MenuLevel = 3,MenuName ="新建員工",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now},new WebManageMenus{About = string.Empty,LinkUrl = "/User/Index",MenuLevel = 3,MenuName ="管理員工",Operator = string.Empty,SortNumber = 1,Status = Status.Normal.GetHashCode(),UpdateDate = DateTime.Now} }}, #endregion}}}};MenuRepository.Insert(menu);

我們可以看到,賦值的過程,我采用的EF生成的實體標準,對于子對象的賦值,我們可以看到,parentID并沒有賦值,因為這時它還沒不存在,這個parentID為上級

菜單的主鍵ID,所以EF在插入完父菜單后,會自動將ID賦值子對象的ParentID,這個過程是系統幫我們完成的。

對于上面的過程,所生成的SQL語句也是我們可以接受的

感謝您的閱讀,感謝Entity Framework開發團隊!

本文轉自博客園張占嶺(倉儲大叔)的博客,原文鏈接:EF架構~單表一對多集合的插入(樹型結構),如需轉載請自行聯系原博主。

總結

以上是生活随笔為你收集整理的EF架构~单表一对多集合的插入(树型结构)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。