修改bug 提交出错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null
提交出错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。
//处理入库计划状态
if (partsPlannedWarehouseOrder != null) {
foreach(var detail in partsPlannedWarehouseOrder.PartsInPlanOrderDetails.Where(p => p.PlannedQuantity == ).ToArray())
//partsPlannedWarehouseOrder.PartsInPlanOrderDetails.Remove(detail);
this.ObjectContext.PartsInPlanOrderDetails.DeleteObject(detail);
if (!partsPlannedWarehouseOrder.PartsInPlanOrderDetails.Any())
partsPlannedWarehouseOrder.Status = (int)DmsPartsPlannedOrderStatus.作废;
else if (partsPlannedWarehouseOrder.PartsInPlanOrderDetails.All(p => p.PlannedQuantity == p.CompletedQuantity))
partsPlannedWarehouseOrder.Status = (int)DmsPartsPlannedOrderStatus.完成;
else if (partsPlannedWarehouseOrder.PartsInPlanOrderDetails.All(p => p.CompletedQuantity == ))
partsPlannedWarehouseOrder.Status = (int)DmsPartsPlannedOrderStatus.生效;
else
partsPlannedWarehouseOrder.Status = (int)DmsPartsPlannedOrderStatus.部分完成;
UpdateToDatabase(partsPlannedWarehouseOrder);
UpdatePartsPlannedWarehouseOrderValidate(partsPlannedWarehouseOrder);
}
//处理出库计划状态
if (partsPlannedDeliveryOrder != null) {
foreach(var detail in partsPlannedDeliveryOrder.PartsOutPlannOrderDetails.Where(p => p.PlannedQuantity == ).ToArray())
// partsPlannedDeliveryOrder.PartsOutPlannOrderDetails.Remove(detail);
this.ObjectContext.PartsOutPlannOrderDetails.DeleteObject(detail);
if (!partsPlannedDeliveryOrder.PartsOutPlannOrderDetails.Any())
partsPlannedDeliveryOrder.Status = (int)DmsPartsPlannedOrderStatus.作废;
else if (partsPlannedDeliveryOrder.PartsOutPlannOrderDetails.All(p => p.PlannedQuantity == p.CompletedQuantity))
partsPlannedDeliveryOrder.Status = (int)DmsPartsPlannedOrderStatus.完成;
else if (partsPlannedDeliveryOrder.PartsOutPlannOrderDetails.All(p => p.CompletedQuantity == ))
partsPlannedDeliveryOrder.Status = (int)DmsPartsPlannedOrderStatus.生效;
else
partsPlannedDeliveryOrder.Status = (int)DmsPartsPlannedOrderStatus.部分完成;
UpdateToDatabase(partsPlannedDeliveryOrder);
UpdatePartsPlannedDeliveryOrderValidate(partsPlannedDeliveryOrder);
}
修改方法:用DeleteObject 方法代替Remove方法
例如://partsPlannedWarehouseOrder.PartsInPlanOrderDetails.Remove(detail);
this.ObjectContext.PartsInPlanOrderDetails.DeleteObject(detail);
不能修改正在遍历的集合,所以用remove是错的
DeleteObject只是将集合中的实体添标记为删除,并不是将实体移除集合,而是将实体添标记为EntityState.Deleted
修改bug 提交出错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null的更多相关文章
- 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null
报错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null . 同时修改主表和从表的数据,想用EF主表T_ReviewPlan中某个对象item删除item对应的从表T_ReviewS ...
- Navicat图形更改表结构的时,设置外键时出现1452错误
原文地址:http://www.mamicode.com/info-detail-1296600.html 提示1452错误,如下图所示. 然后百度了一下,得到了一个靠谱的答案: 这是因为表设置了外键 ...
- mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)
字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...
- MySQL数据库 外键,级联, 修改表的操作
1.外键: 用来建立两张表之间的关系 - 一对多 - 多对多 - 一对一 研究表与表之间的关系: 1.定义一张 员工部门表 id, name, gender, dep_name, dep_desc - ...
- MySQL数据库建立外键失败的原因总结
在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can’t create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来 ...
- PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键
PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...
- 使用admin的步骤、必知必会13条、单表的双下划线、外键的操作、多对多的操作:
MVC M: model 模型 与数据库交互 V: view 视图 HTML C:controller 控制器 流程 和 业务逻辑 MTV M:model ORM T:template 模板 HTML ...
- day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)
day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (29) ------ 第五章 加载实体和导航属性之过滤预先加载的实体集合和修改外键关联
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-13 过滤预先加载的实体集合 问题 你想过滤预先加载的实体集合,另外,你想使用 ...
随机推荐
- Linux就该这么学05学习笔记
参考链接:https://www.linuxprobe.com/chapter-05.html 1.用户身份和能力 用户 管理员UID为0:系统的管理员用户. 系统用户UID为1-999: Lin ...
- token理解
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- jffs2镜像制作
自己被自己绊住了,出于对无知的恐惧,总觉得是很难的一件事情. demo board ltp-ddt qspi_mtd_dd_rw error:can't read superblock on /dev ...
- 设置flex 为1
父级的宽度: 375 用来每个子元素的宽度:40 设置了 flex:1,每个子元素的宽度为125 125*3= 375, 设置flex=1后子元素会平均的分配父级元素剩下的宽度
- HTML5 绘制阴影
代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8 ...
- 警惕黑客利用新方法绕过Office安全链接
东方联盟黑客安全研究人员透露,一些黑客已经发现绕过MicrosoftOffice365的安全功能,该功能最初旨在保护用户免受恶意软件和网络钓鱼攻击. 被称为安全链接的功能已被包含在Office365软 ...
- python之字符串切分
在工作中,经常遇到字符串切分,尤其是操作linux命令,返回一段文本,如下面这种格式 Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G ...
- [CSP-S模拟测试]:小奇挖矿2(DP+赛瓦维斯特定理)
题目背景 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. 题目描述 现在有$m+1$个星球,从左到右标号为$0$到$n$,小奇最初 ...
- UILabel How to set background image
UILabel *myLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)]; UIImage *img = [UIImage ...
- handler消息机制入门
handler消息机制入门 为什么要用handle? 我们在网络上读取图片信息时,是不能把耗时操作放在主线程里面的,当我们在子线程中获取到了图片的消息的时候,我们就需要把这个数据传给主线程. 而直接使 ...