时间:2021-05-25
在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操作时需要为truethis.Configuration.LazyLoadingEnabled = false;this.Configuration.ProxyCreationEnabled = false;//禁止动态拦截System.Data.Entity.DynamicProxies.}以上所述是小编给大家介绍的关于多对多关系表无法更新与插入的问题 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
创建一张作者表,author,创建外键与book表,多对多关系,外键字段放在那张表都可以,classAuthor(models.Model):name=mode
一、无法动态更新数据的实例1.如下,数据库中创建了班级表和教师表,两张表的对应关系为“多对多”fromdjango.dbimportmodelsclassCla
个人对于laravelorm中对于一对多关系的理解文章表article,文章自然可以评论,表comment记录文章的评论,文章和评论的关系就是一对多,一篇文章可
什么是多对多关联?Eloquent中一个模型就是一个数据表,数据表之间通常会有关联,多对多关联就是2个表之间相互有很多关联,比如说:一个表存放了用户数据,另一个
一、创建模型1,一对多关系一本书只有一个出版社,一个出版社可以出版多本书,从而书与出版社之间就构成一对多关系,书是‘多'的一方,出版社是‘一'的一方,我们在建立