日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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 ="系統(tǒng)管理",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,這個過程是系統(tǒng)幫我們完成的。

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

感謝您的閱讀,感謝Entity Framework開發(fā)團隊!

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

總結

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

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