中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

EF架構~關于多對多關系表無法更新與插(cha)入(ru)的問(wen)題

回到目錄

在EF里(li),我們設計模(mo)型時,會(hui)(hui)設計到多對多關(guan)系(xi),在EF里(li)會(hui)(hui)把這(zhe)種(zhong)關(guan)系(xi)會(hui)(hui)轉成兩個一對多的(de)(de)關(guan)系(xi)表,這(zhe)是比較友(you)好(hao)的(de)(de),因為多對多來(lai)說,對于(yu)業務本(ben)身沒(mei)什么意(yi)思,所以(yi)隱藏了(le),沒(mei)什么壞(huai)處(chu),但(dan)對于(yu)這(zhe)個隱藏來(lai)說,對開發人員來(lai)講你(ni)就無法(fa)主動控制這(zhe)張(zhang)關(guan)系(xi)表了(le),而需要使用EF的(de)(de)update來(lai)更(geng)(geng)新(xin)(xin)主表的(de)(de)同時去更(geng)(geng)新(xin)(xin)關(guan)系(xi)表,這(zhe)對于(yu)初學者會(hui)(hui)出現一些問題,今天(tian)說的(de)(de)就是多對多關(guan)系(xi)無法(fa)更(geng)(geng)新(xin)(xin)和插(cha)入的(de)(de)問題.

數據結構

  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("關于")]
        public string About { get; set; }
        [DisplayName("排序"), Required]
        public int SortNumber { get; set; }
        [DisplayName("最后(hou)操作人")]
        public string Operator { get; set; }
        [DisplayName("權限"), 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; }
    }

關于AutoDetectChangesEnabled

參考://msdn.microsoft.com/en-us/data/jj556205.aspx

大叔的解釋,當AutoDetectChangesEnabled為(wei)true時(shi),可以加(jia)載依賴(lai)的關系,在插入和更(geng)新時(shi)會有同(tong)步完(wan)成(多對多,一對多關系時(shi)使用),當(dang)值為(wei)false時(shi),只更(geng)新(插入)主(zhu)表(biao)的數據

問題解決

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

在數據上下文中的設置

        public ManagerContext()
            : base("DefaultConnection")
        {
           
            this.Configuration.AutoDetectChangesEnabled = true;//對多對多,一對多進行curd操作時需要(yao)為(wei)true
            this.Configuration.LazyLoadingEnabled = false;
            this.Configuration.ProxyCreationEnabled = false;//禁(jin)止動(dong)態攔截System.Data.Entity.DynamicProxies.

        }

對技術的研究與(yu)探索(suo),我們還在繼續和堅持...

回到目錄

posted @ 2016-07-27 09:51  張占嶺  閱讀(4361)  評論(0)    收藏  舉報