关于多对多关系表无法更新与插入的问题

所属分类: 网络编程 / ASP.NET 阅读数: 399
收藏 0 赞 0 分享

在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多的关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说,对开发人员来讲你就无法主动控制这张关系表了,而需要使用EF的update来更新主表的同时去更新关系表,这对于初学者会出现一些问题,今天说的就是多对多关系无法更新和插入的问题.

数据结构

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("最后操作人")]
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

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

大叔的解释,当AutoDetectChangesEnabled为true时,可以加载依赖的关系,在插入和更新时会有同步完成(多对多,一对多关系时使用),当值为false时,只更新(插入)主表的数据

问题解决

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操作时需要为true
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;//禁止动态拦截System.Data.Entity.DynamicProxies.
}

以上所述是小编给大家介绍的关于多对多关系表无法更新与插入的问题 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

开源跨平台运行服务插件TaskCore.MainForm

这篇文章主要为大家详细介绍了开源跨平台运行服务插件TaskCore.MainForm的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

CKEditor自定义按钮插入服务端图片

这篇文章主要为大家详细介绍了CKEditor自定义按钮插入服务端图片的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Asp.net Web Api实现图片点击式图片验证码功能

现在验证码的形式越来越丰富,今天要实现的是在点击图片中的文字来进行校验的验证码。下面通过本文给大家分享Asp.net Web Api实现图片点击式图片验证码功能,需要的的朋友参考下吧
收藏 0 赞 0 分享

WPF实现ScrollViewer滚动到指定控件处

这篇文章主要为大家详细介绍了WPF实现ScrollViewer滚动到指定控件处,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

WPF实现带全选复选框的列表控件

这篇文章主要为大家详细介绍了WPF实现带全选复选框的列表控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Asp.net MVC 中利用jquery datatables 实现数据分页显示功能

这篇文章主要介绍了Asp.net MVC 中利用jquery datatables 实现数据分页显示功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

asp.net 利用NPOI导出Excel通用类的方法

本篇文章主要介绍了asp.net 利用NPOI导出Excel通用类的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

VS2015自带LocalDB数据库用法详解

这篇文章主要为大家详细介绍了VS2015自带LocalDB数据库的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SignalR Self Host+MVC等多端消息推送服务(一)

这篇文章主要为大家详细介绍了SignalR Self Host+MVC等多端消息推送服务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SignalR Self Host+MVC等多端消息推送服务(二)

这篇文章主要为大家详细介绍了SignalR Self Host+MVC等多端消息推送服务的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多