關(guān)于多對多關(guān)系表無法更新與插入的問題
在EF里,我們設(shè)計模型時,會設(shè)計到多對多關(guān)系,在EF里會把這種關(guān)系會轉(zhuǎn)成兩個一對多的關(guān)系表,這是比較友好的,因為多對多來說,對于業(yè)務(wù)本身沒什么意思,所以隱藏了,沒什么壞處,但對于這個隱藏來說,對開發(fā)人員來講你就無法主動控制這張關(guān)系表了,而需要使用EF的update來更新主表的同時去更新關(guān)系表,這對于初學(xué)者會出現(xiàn)一些問題,今天說的就是多對多關(guān)系無法更新和插入的問題.
數(shù)據(jù)結(jié)構(gòu)
public partial class WebManageRoles : Lind.DDD.Domain.Entity { public WebManageRoles() { this.WebManageMenus = new List<WebManageMenus>(); this.WebManageUsers = new List<WebManageUsers>(); } [DisplayName("名稱"), Required] public string RoleName { get; set; } [DisplayName("關(guān)于")] public string About { get; set; } [DisplayName("排序"), Required] public int SortNumber { get; set; } [DisplayName("最后操作人")] public string Operator { get; set; } [DisplayName("權(quán)限"), Required] public int OperatorAuthority { get; set; } [DisplayName("部門"), Required] public int DepartmentID { get; set; } public virtual WebDepartments WebDepartments { get; set; } public virtual ICollection<WebManageMenus> WebManageMenus { get; set; } public virtual ICollection<WebManageUsers> WebManageUsers { get; set; } }
關(guān)于AutoDetectChangesEnabled
參考:https://msdn.microsoft.com/en-us/data/jj556205.aspx
大叔的解釋,當(dāng)AutoDetectChangesEnabled為true時,可以加載依賴的關(guān)系,在插入和更新時會有同步完成(多對多,一對多關(guān)系時使用),當(dāng)值為false時,只更新(插入)主表的數(shù)據(jù)
問題解決
old.WebManageMenus = menuRepository.GetModel(i => menu.Contains(i.Id)).ToList(); old.DepartmentID = dept; old.RoleName = entity.RoleName; old.SortNumber = entity.SortNumber; old.About = entity.About; old.DataUpdateDateTime = DateTime.Now; roleRepository.Update(old);
在數(shù)據(jù)上下文中的設(shè)置
public ManagerContext() : base("DefaultConnection") { this.Configuration.AutoDetectChangesEnabled = true;//對多對多,一對多進(jìn)行curd操作時需要為true this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false;//禁止動態(tài)攔截System.Data.Entity.DynamicProxies. }
以上所述是小編給大家介紹的關(guān)于多對多關(guān)系表無法更新與插入的問題 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解ASP.NET數(shù)據(jù)綁定操作中Repeater控件的用法
.NET中的Repeater控件支持?jǐn)?shù)據(jù)模板,而且可以自由地定義樣式,這里我們就來詳解ASP.NET數(shù)據(jù)綁定操作中Repeater控件的用法,需要的朋友可以參考下2016-06-06System.Data.SqlClient.SqlException: 無法打開登錄所請求的數(shù)據(jù)庫 登錄失敗。
今天幫客戶配置服務(wù)器的時間,安全設(shè)置后,將sqlserver以普通用戶權(quán)限運行的時候提示這個錯誤。2011-08-08ASP.NET從字符串中查找字符出現(xiàn)次數(shù)的具體實現(xiàn)方法
今天在一場“特殊的討論”中引入了一個問題,如何在C#求出字符串中某字符的出現(xiàn)次數(shù),比如求“ADSFGEHERGASDF”中“A”出現(xiàn)的次數(shù)2013-11-11c# Random快速連續(xù)產(chǎn)生相同隨機(jī)數(shù)的解決方案
在寫數(shù)獨基類的時候為了產(chǎn)生隨機(jī)數(shù)的時候遇到奇怪的問題2009-03-03ASP.NET?Core?實現(xiàn)自動刷新JWT?Token
這篇文章主要介紹了ASP.NET?Core?實現(xiàn)自動刷新JWT?Token,通過增加??refresh_token??,客戶端使用refresh_token去主動刷新JWT?Token,下文具體操作過程需要的小伙伴可以參考一下2022-04-04