实体框架 4 将订单链接到拥有 10,000 个订单的客户非常慢

2024-06-26

这个把我难住了。

我有一个客户和订单实体。客户可以有多个订单。

当我创建新订单并设置 Customer 属性 (Order.Customer = customer) 时,如果客户有 10,000 个订单,则会有很长的延迟(20 秒)。在添加这个新订单之前,上下文似乎正在加载所有 10,000 个订单。

我目前没有直接使用 FK,我怀疑这可能会有所帮助。

有什么想法可以在不进行大规模重构的情况下改善问题吗?

Cheers.


问题很可能是您使用的是 T4 POCO 模板。该模板生成令人讨厌的修复方法并在所有导航属性中内部使用它们。如果您修改一侧的导航属性,则会触发修复,修复将尝试修改反向导航属性以使对象图保持一致。问题来了。一旦你分配Customer财产给Order它将修复的实例Orders财产在Customer实例,但修复程序像任何其他代码一样访问属性并触发所有客户订单的延迟加载。

解决办法只有几种:

  • 使用外键关系并设置 FK 属性。这应该适用于插入,但对于更新它仍然会导致问题,因为将 FK 属性设置为另一个值将设置null导航属性,这将再次触发前一个父级的修复。
  • 关闭此操作的延迟加载 - 您很可能不需要它来创建新订单。
  • 修改模板并删除fixupus
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架 4 将订单链接到拥有 10,000 个订单的客户非常慢 的相关文章

  • 返回带有列表对象的列表对象

    我有三个表 汽车品牌 汽车型号 和 CarsandModel 我有 Carsand 模型表 因为一个模型可以由多个制造商构建 我想返回包含汽车型号列表的汽车品牌列表 我现在的长篇大论不是过滤汽车型号的汽车制造商列表 我尝试添加一个 wher
  • 如何在实体框架中完全锁定一行

    我正在处理的情况是我们正在处理金钱交易 例如 我有一个用户钱包表 其余额位于该行 UserId Wallet Id Balance 现在 在我们的网站和网络服务中 每次发生特定交易时 我们都需要 检查是否有足够的资金可用于执行该交易 从余额
  • 提供者未返回 ProviderManifest 实例

    当我想配置我的数据源 EntityDataSource 1 并将实体数据模型自动生成的连接字符串分配给它时 我收到错误 无法加载连接字符串中指定的元数据 请考虑重建 Web 项目以构建可能包含元数据的程序集 发生以下错误 提供程序未返回 P
  • 如何以一种形式发布两个或多个模型?

    我正在为一个项目开发互联网课程计划应用程序 该课程计划是根据以下模型构建的 使用数据库优先方法中的实体框架生成 public partial class Subject public int Id get set public string
  • EF 是否可以自动删除未删除父级的孤立数据?

    对于使用 Code First EF 5 beta 的应用程序 我有 public class ParentObject public int Id get set public virtual List
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 在存储库模式中按 ID 进行过滤是否是不好的做法

    我正在使用 ASP NETMVC4 with 实体框架5 基本上每个控制器操作结果按登录用户的公司 ID 过滤数据库结果 我刚刚开始实现存储库模式来返回模型 而不是直接从控制器过滤 DbContext 将companyID传递到存储库中以过
  • 从EntityFramework的`DbContext`获取数据库类型

    问题非常简单 给定一个实体框架的实例DbContext 我想告诉它的有效数据库之间是如何连接的 据我所知 目前有针对 SQL Server Microsoft MySQL Oracle 以及 Postgres 的 EF 提供程序的实现 假设
  • LINQ to Entities 查询中的可重用谓词表达式

    在我们的应用程序中许多不同查询中出现的一组特定条件已经慢慢变得更加复杂 为了避免重复此代码 我想将这些条件拆分为一个方法 该方法将条件作为表达必要时可以依次应用 public Expression
  • ASP.NET MVC5:想要使用模型绑定更新集合中的多个项目

    所以我有一个用户对象的集合 它应该是可批量编辑的 同时编辑许多用户 我使用实体框架将用户输入保存到数据库中 控制器方法从表单获取的集合为 null 为什么 另外 BindAttribute 是否可以像我的代码中那样与集合一起使用 View
  • MySql + 实体框架 = 每个派生表必须有自己的别名

    我必须从我的 C 程序访问另一个开发人员的一些 MySql 视图 因此 经过一番搜索后 我决定使用实体框架 并使用这个问题中提到的驱动程序 将 MySQL 与实体框架结合使用 https stackoverflow com question
  • 重构:从自定义数据访问层切换到实体框架

    我是一名 NET 开发人员 作为重构项目的一部分 我有几个问题 我们的软件当前使用 Active Record 模式 数据对象和业务对象之间的一对一映射 不好的是业务对象继承自数据对象 导致层之间的高度耦合 我们的目标是从自定义数据访问层
  • 从 LINQ 查询获取第一个结果 - 为什么 First() 成功时 ElementAt(0) 失败?

    我有一个方法添加学生 它查找同名学生 如果存在同名学生 则从数据库中返回现有学生 否则创建一个新学生并将其添加到数据库中 我很好奇为什么se students First
  • 如何让EF全局记录sql查询?

    我该如何 告诉 EF全局记录查询 我正在读这篇博文 EF 日志记录 http blog oneunicorn com 2013 05 08 ef6 sql logging part 1 simple logging 它一般告诉我们如何记录s
  • 实体框架的提供程序连接字符串是否可以替换为 web.config 中已定义的数据库连接字符串?

    我在 web config 的 connectionString 部分中定义了一个数据库连接字符串 ApplicationServices 并有 3 个实体框架连接字符串 它们的提供程序连接字符串属性与 ApplicationService
  • 自引用多对多关系EF代码优先

    我使用 ASP NET MVC 和 Durandal Breeze 模板 假设我有以下课程 public class Person public int Id get set public string Firstname get set
  • 为什么有多个 DbContext 类?

    当我使用 LINQ 和 dbml 文件进行编程时 只有一个上下文 但是 当我创建一个 MVC 站点时 似乎每个实体都有单独的上下文 这是 MVC 教程向我展示的方式 使用 电影 上下文 I have public class Account
  • 如何使实体框架 CTP5 与 SQLite 一起工作?

    我在将 SQLite 数据库与 EF CTP5 一起使用时遇到了非常困难 我只是想执行这个MSDN 示例 http blogs msdn com b adonet archive 2010 12 06 ef feature ctp5 cod
  • 在 EF Core 中应用所有 IEntityTypeConfiguration 派生类

    有谁知道一种方法或有一个实现来应用派生自的所有类IEntityTypeConfiguration lt gt to the DbContext在运行时 似乎没有内置任何东西 需要通过以下方式手动加载每一个 protected overrid
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们

随机推荐

  • 如何在mvc视图中的表中显示数据库数据

    在我的 MVC 应用程序中 我从数据库检索数据 我想在表格中显示退役数据 控制器代码 public ActionResult MyAccount var user User Identity Name string sThumbnails
  • Angular ui 路由器状态 - 具有相同模板和控制器的多个状态

    我使用 Angular ui 路由器状态提供程序在 AngularJS 应用程序中定义了如下状态 而且 我想用相同的配置定义多个状态 即 使用相同的模板和控制器 stateProvider state parent templateUrl
  • Openlayers 3 中心地图

    我在唱歌开放层 3 http openlayers org en v3 0 0 apidoc 显示地图 我想使用经纬度坐标将地图居中 我正在使用快速入门代码 http openlayers org en v3 1 1 doc quickst
  • Web API 2 c# 中的 Google reCaptcha

    我有一个 ASP NET Web API 2 项目 我正在尝试从表单中读取 Google Captcha 我尝试了这段代码 public string Post FoundingRequest model var response Requ
  • 如何使用 xpath 提取
    标记之间的文本

    以下是我的应用程序中按钮的代码 span class ms cui ctl largelabel New br Map span 我想单击该按钮并使用 Selenium Webdriver 我尝试了多种组合 但它对我不起作用 以下是我尝试过
  • 一键安装 Safari 扩展

    当用户下载插件 Firefox 例如 时 下载完成后插件安装就会开始 在 Safari 中是否有可能实现同样的目标 即用户单击链接下载插件 下载后会自动开始安装 我认为这不可能在任何其他域上执行 除了extensions apple com
  • Cmake:在自定义目录中查找 protobuf 包

    我有 cmake 3 10 x 并下载了当前的 protobuf 源 3 6 1 使用 cmake 我创建了 bin 目录 PROTOBUF SOURCE DIR bin 在其中成功构建了该库 下一步我想在我的基于 cmake 的项目中使用
  • 在 Jenkins 服务器上找不到 tcpSlaveAgentListener

    我正在尝试从从机连接到 Jenkins 主实例 从连接的角度来看 一切看起来都很好 我可以在 Jenkins 的 配置全局安全性 中设置选定的 JNLP 代理的 TCP 端口 从那里启动从节点 curl http myjenkinsurl
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • 连接到 Amazon EC2 实例时 SSH 挂起

    我可以使用以下命令连接到 ec2 实例 但今天我无法使用它进行连接 ssh i abcKey pem email protected cdn cgi l email protection v 以下是详细内容 我已经在 EC2 中打开了 SS
  • Java 中使用 PBKDF2 进行密码验证

    我正在用 Java 进行基于密码的文件加密 我使用 AES 作为底层加密算法PBKDF2WithHmacSHA1使用以下代码从盐和密码组合中派生密钥 我从本网站上的另一位慷慨的海报获得 SecretKeyFactory f SecretKe
  • 聚类算法采用哪种编程结构

    我正在尝试实现以下 分裂 聚类算法 下面是该算法的简短形式 完整的描述可用here https dl dropboxusercontent com u 540963 diana pdf 从样本 x i 1 n 开始 将其视为由 n 个数据点
  • 如何在 Android Q 上将照片广播到图库

    我使用这些代码拍照并将照片广播到画廊 它有效 我发现我的广播功能使用MediaStore Images ImageColumns DATA and Intent ACTION MEDIA SCANNER SCAN FILE 并且这些已被弃用
  • python 日志记录:当级别 >= ERROR 时,通过电子邮件将整个日志文件作为附件发送

    我的日志系统有一些处理程序 日志文件 INFO 电子邮件处理程序 gt ERROR 和用于可选调试的流处理程序 当发生错误 异常 关键消息时 我希望电子邮件处理程序将日志文件从文件处理程序附加到错误电子邮件 import logging d
  • Java中C是A的子类时“C c = new C()”和“A c = new C()”的区别

    假设我们有类 A 作为父类 以及扩展它的类 C class A void m System out println A m class C extends A Override void m System out println C m 和
  • 我如何在 WPF 中模仿这种行为?

    我对 WPF 和 C 开发相当陌生 我正在制作这个应用程序 我不知道是否有人熟悉 VOIP App Discord 但他们有一个我非常喜欢的特定行为 并且想尝试使用 WPF 创建类似的风格 当您在 Discord 上添加服务器时 单击一个按
  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 将 div 移动到 dom 中的其他位置

    以下代码被动态插入到 DOM 中 但是 我想将 div example 从原来的位置移动并将其添加到 wrapper 前面 我如何使用 jQuery 来实现这一目标 div div div div div div div div I tri
  • ruby require 问题(与 $LOAD_PATH 有关)

    我正在尝试使用我刚刚安装的 gem 通过sudo gem install excelsior 像这样 需要 红宝石 要求 精益求精 这在 irb 中工作得很好 但是当我将完全相同的代码粘贴到 rb 文件中并尝试使用 ruby 运行它时 我得
  • 实体框架 4 将订单链接到拥有 10,000 个订单的客户非常慢

    这个把我难住了 我有一个客户和订单实体 客户可以有多个订单 当我创建新订单并设置 Customer 属性 Order Customer customer 时 如果客户有 10 000 个订单 则会有很长的延迟 20 秒 在添加这个新订单之前