2019独角兽企业重金招聘Python工程师标准>>>

该文件主要是在记录C#过程中级联更新问题。该问题主要是在对数据库中的对象中的关联进行更新,导致出现了极大的性能问题,希望有这方面的专家能给出建设性的意见和方向。

class Student
{int id;string name;ICollection<Course> Courses;}class Course{int id;int studentId;}

如果我需要更新 Student 类的courses 列表时, 首先清除或者移除列表中的数据,然后添加并更新。

stu.ClassName.Clear();

结果出现异常错误 

其实就是不能通过此种方法删除一对多的关系。于是就老实的 通过 context 去删除。

context.Courses.RemoveRange(stu.Courses);

通过此种方法确实达到了目的,删除了数据,但是测试,发现1000 多条的数据,竟然发现耗费了大量的时间。我的情况比较复杂,原来只用了 5 mins, 结果这么已处理时间达到了40 mins以上。我直接无语。。。(个人认为耗时主要集中在更新对象上),所以我只能另寻他法:多遍历一次,然后通过SQL处理删除,然后重新加载改EF Model.

context.Database.ExecuteSqlCommand("delete from course where studentid="+id);(注意通过Sql操作并不会更新模型,当执行Model 和 SQL 混合使用时,将导致模型保存时出现错误。

通过上面确实能够解决了效率问题,但是已经失去了OOP思想,我觉得只是一种临时的方案。 希望有人能够提出一种能加合理的方案。

转载于:https://my.oschina.net/RainyZou/blog/600812

C# EF6 更新对象相关推荐

  1. JavaScript 更新对象属性

    当你创建了一个对象后,你可以用点操作符或中括号操作符来更新对象的属性. 举个例子,让我们看看 ourDog: var ourDog = { "name": "Camper ...

  2. 自定义变量 配置文件_跟我一起学.NetCore之自定义配置源热更新对象绑定

    前言 上一篇针对不同的配置源进行举例演示,感受到不同配置源和不同数据格式使用统一操作的便捷(即没有什么加一层解决不了的,这个不是我说的),这里接着说说自定义配置源.配置热更新.配置绑定对象相关操作: ...

  3. java 更新对象_java通过key-list和对应value更新当前对象

    //递归更新一个json对象,原对象若没有则插入key,精妙! @SuppressWarnings("unchecked") Object setObjectRecursive(O ...

  4. 跟我一起学.NetCore之自定义配置源-热更新-对象绑定

    前言 上一篇针对不同的配置源进行举例演示,感受到不同配置源和不同数据格式使用统一操作的便捷(即没有什么加一层解决不了的,这个不是我说的),这里接着说说自定义配置源.配置热更新.配置绑定对象相关操作: ...

  5. 七牛云更新对象存储空间突然上传不了图片,状态码631

    七牛云的对象存储域名过期了,于是重新申请和创建了两个空间,一个用来存储头像图片,另一个用来存储分享长图,在项目配置文件中把旧的域名替换成新的域名 访问项目,测试更换头像功能,发现一直没有更新头像成功, ...

  6. vuex中更新对象或数组的值页面不更新的问题

    (vue3没有此问题)在Vuex中,如果store中数据是数组或者是对象,操作之后,vuex 数值已经改变了,但页面展示的对应数值却没有改变. 类似的情况,大部分出现在这几个场景 state: {ob ...

  7. C#更新对象值//删除时异常 Object reference not set to an instance of an object.

    更新实体时,查询结果后用qcmbatch.BatchId 的形式更改要更新的属性值(而不是new新实体[qcmbatch = new QcmBatch() ]x) if (InTag.final_de ...

  8. MVC5+EF6 入门完整教程四

    MVC5+EF6 入门完整教程四 原文:MVC5+EF6 入门完整教程四 上篇文章主要讲了如何配置EF, 我们回顾下主要过程: 创建Data Model à 创建Database Context à创 ...

  9. 深入探索.NET内部了解CLR如何创建运行时对象

    前言 SystemDomain, SharedDomain, and DefaultDomain. 对象布局和内存细节. 方法表布局. 方法分派(Method dispatching). 因为公共语言 ...

  10. 乐变黄杲:当前如何选择App热更新服务

    在2017年6月这个时间点,我们有必要谈谈热更新这个技术到底何去何从. \\ 上半年苹果的两次警告,通知iOS开发者在6月12日前移除热更新相关代码,否则将会下架相关App,一时间风声鹤唳,那么App ...

最新文章

  1. 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020...
  2. 软件工程师的发明家—从发明家的视角分析软件
  3. my rank in math in the domain of pure mathematics
  4. .NET(C#):浅谈程序集清单资源和RESX资源
  5. 自建邮件服务器更给力?
  6. python实现离线翻译_10分钟教你用Python实现微信翻译机器人
  7. (十八)深入浅出TCPIP之HTTP和HTTPS
  8. 程序员在想些什么?拒绝盲猜,CSDN帮你精准洞察 Ta 们的心
  9. linux下模糊搜索命令,linux命令当前文件夹下面模糊搜索文件
  10. 2019年7月第一周总结-RabbitMQ总结
  11. 用sed和awk实现将文本中的上下两行合并为一行(转载)
  12. 软件工程学习进度表06
  13. java学习之Eclipse开发工具
  14. 利用tensorFlow api 识别手术器械
  15. C语言实现sin函数的程序设计
  16. [转贴] 刷机利器 Rom Manager 的简单用法
  17. xss漏洞java代码_Java处理XSS漏洞的工具类代码
  18. YOLO算法发展史 v1 v2 v3
  19. JAVA获取硬盘序列号
  20. python加密狗的制作_制作u盘加密狗图文教程

热门文章

  1. python:sklearn 标签编码(LabelEncoder)
  2. 2017年第八届 蓝桥杯 java B组
  3. dz论坛自定义html,关于diy模块中的自定义html
  4. c语言中Oo是什么进制整数字,C语言中的大小端存储及原码补码反码的运算关系 %d %u...
  5. matlab三维矩阵的运算符,【求助】多维矩阵求和运算!!
  6. java redis设置过期时间_Redis的内存回收原理,及内存过期淘汰策略详解
  7. mysql 最后行加汇总_[mysql系列]6.幻读和间隙锁
  8. C/C++ 各种进制的表示方法/ 进制前缀
  9. 实验四------实验十二
  10. 英特尔第四代酷睿处理器数字和字母代表什么意思