实体映射关系如下,SISTUser和SISTUserRoles存在多对多的关系,生成中间表

 public partial class SISTUserMap: EntityTypeConfiguration<SISTUser>
{
public SISTUserMap()
{
this.ToTable("SISTUser");
this.HasKey(u => u.Id);
this.Property(u => u.Id).HasColumnName("UserId"); this.Property(u => u.UserName).HasMaxLength();
this.Property(u => u.Email).HasMaxLength(); this.HasMany(u => u.SISTUserRoles)
.WithMany()
.Map(m => m.ToTable("SISTUser_SISTUserRole_Mapping")); } }

更新操作

public ActionResult SetUserRole(string UserId, string RoleId)
{
try
{
SISTUser user = _userService.GetUserByUserId(UserId);
var allUserRoles = _userService.GetSISTRoles();
foreach (var userRole in allUserRoles)
{
if(userRole.Id==RoleId)
{
if (user.SISTUserRoles.Count(cr => cr.Id == userRole.Id) == )
user.SISTUserRoles.Add(userRole);
} else
{
if (user.SISTUserRoles.Count(cr => cr.Id == userRole.Id) > )
user.SISTUserRoles.Remove(userRole);
}
} _userService.UpdateUser(user); return Json(new BaseJsonResult<object> { success = true, msg = "编辑成功", data = null });
} catch (Exception ex)
{
return Json(new BaseJsonResult<object> { success = false, msg = ex.Message, data = null });
}
}

结果报错:违反了 PRIMARY KEY 约束 'PK_dbo.SISTUserRole'。

原因是下面的查询使用了TableNoTracking,具体底层原理待考察

  public virtual IList<SISTUserRole> GetSISTRoles()
{
//使用TableNoTracking会报错
return _sISTUserRoleRepository.Table.ToList();
}

EF多对多更新报错(TableNoTracking引发的bug)的更多相关文章

  1. EF core2.1+MySQL报错'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)

    一.使用.net core 2.0 EF mysql 运行一直报错如下: An unhandled exception occurred while processing the request. M ...

  2. Vue热更新报错(log.error('[WDS] Errors while compiling. Reload prevented.'))

    log.error('[WDS] Errors while compiling. Reload prevented.');中的WDS其实是webpack-dev-serverwebpack的意思,用来 ...

  3. EF执行存储工程报错 String[4]: Size 属性具有无效大小值 0。

    EF中执行存储过程报错 String[4]: Size 属性具有无效大小值 0 排查后是如下问题所致,给定的参数没有设定大小(加入红框内的就可以了) private string GetCode(MC ...

  4. SVN更新报错问题(Please execute the 'Cleanup' command)

    SVN更新报错问题(Please execute the 'Cleanup' command) https://segmentfault.com/a/1190000012571289 svn: E20 ...

  5. druid + mysql + mybatis 批量更新报错

    首先 批量更新报错 sql injection violation, multi-statement not allow 然后看了博客:https://blog.csdn.net/qq_3634595 ...

  6. IIS错误代码500.21 ,Nhibernate更新报错,委托的使用。action传参数

    快速阅读 IIS错误代码500.21 ,Nhibernate更新报错,委托的使用.action传参数 IIS错误代码500.21 HTTP 错误 500.21 - Internal Server Er ...

  7. SVN更新报错

    将服务器SVN文件更新到本地是出现下图错误 报错中已经提示可以通过clean up来清理,若直接执行release lock,则不会解决问题. 原因:本地的项目中存在过期的工作副本 解决办法:选择该文 ...

  8. mybatis批量更新报错badsql

    mybatis批量更新时语法写的都对,但是报错,需要在连接上面加上allowMultiQueries=true 示例:jdbc:MySQL://192.168.1.236:3306/test?useU ...

  9. mybatis批量更新报错

    批量更新sql <update id="updateAutoAppraiseInfo" parameterType="Object"> <fo ...

随机推荐

  1. Java NIO浅析

    NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接 ...

  2. POJ2942:Knights of the Round Table

    传送门 点双练习. 很简单的一道模板题,建立反图,求出点双,二分图判定奇环. //POJ 2942 //by Cydiater //2016.11.2 #include <iostream> ...

  3. Redis连接

    using System; using System.Configuration; using StackExchange.Redis; namespace Redis { public sealed ...

  4. JavaScript中的继承

    一.原型链(默认) function Person(){}; function Student(){}; Student.prototype = new Person(); Student.proto ...

  5. Node.js中exports与module.exports的区别

    原文:http://www.hacksparrow.com/node-js-exports-vs-module-exports.html 你肯定对Node.js模块中用来创建函数的exports对象很 ...

  6. 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...

  7. 计算机常用dos命令

    一.简单的dos命令 win+R ------打开"运行"窗口 cmd ------回车进入"dos"命令窗口 ipconfig ------查看本机ip地址 ...

  8. MyBatis传入多个参数的问题

    一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...

  9. 如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作

    Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常ID ...

  10. [Storm] No data flows into bolt

    最近在HDP2.1的HBase环境中安装了一个Storm测试机器(单节点,JDK8),遇到了几个问题,记录下来. 尝试步骤 1. 使用和HBase一样HDP版本,直接安装Storm yum insta ...