首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该共享Entity-Framework上下文还是为每个操作创建一个新的上下文?

在软件开发中,使用Entity Framework进行数据库操作时,通常有两种方法来管理上下文(Context):共享上下文(Sharing Context)和为每个操作创建新的上下文(Creating a new Context for each operation)。

  1. 共享Entity-Framework上下文:

共享上下文是指在整个应用程序中只创建一个上下文实例,并在需要时使用它。这种方法的优势在于:

  • 上下文实例的创建开销较小,因为它只需要创建一次。
  • 上下文实例的内存使用量较低,因为它只需要在内存中保留一次。
  • 上下文实例的数据跟踪较为简单,因为它只需要跟踪一个应用程序的所有数据操作。

共享上下文的应用场景包括:

  • 中小型应用程序,其中数据操作较少,且不涉及多线程操作。
  • 对性能要求不高的应用程序。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 为每个操作创建一个新的上下文:

为每个操作创建一个新的上下文是指在每次执行数据库操作时都创建一个新的上下文实例。这种方法的优势在于:

  • 上下文实例的数据跟踪较为精确,因为它可以为每个操作单独跟踪数据。
  • 上下文实例的生命周期较短,因为它只在操作期间存在。
  • 上下文实例的内存使用量较高,因为它需要为每个操作分配内存。

为每个操作创建一个新的上下文的应用场景包括:

  • 大型应用程序,其中数据操作较多,且涉及多线程操作。
  • 对性能要求较高的应用程序。

推荐的腾讯云相关产品和产品介绍链接地址:

综上所述,共享Entity-Framework上下文和为每个操作创建一个新的上下文各有优劣,应根据实际应用场景和性能要求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

服务之美-读《微服务设计》笔记全集(一)

其实这样的出发点也许是不对的,是不是可以从提供功能的角度来提供一个更加通用的微服务? 同样的,当你在思考组织内的限界上下文时,不应该从共享数据的角度来考虑,而应该从这些上下文能够提供的功能来考虑。...逐步划分上下文 >> 通常很难说哪种规则更合理,但是你应该根据组织结构来决定,到底是使用嵌套的方法还是完全分离的方法。 嵌套上下文还是隔离上下文,取决于组织架构和团队边界。...如果几个上下文都是由一个小组的人负责,你把这些独立开来后,反倒不好管理。但这种思考角度似乎有点问题,虽然表象上可以讲通。应该是根据上下文内的服务的负荷程度来决定才更具本质。...Realestate.com.au使用了很多深度定制化的服务模板来快速创建新服务。他们不会在服务之间共用代码,而是把这些代码复制到每个新的服务中,以防止耦合的发生。...>> 举个例子,你可以创建一个叫作“处理中的订单”的概念,围绕这个概念可以把所有与订单相关的端到端操作(及相应的异常)管理起来。

54420

限界上下文的边界

这里所谓的“模块”,在Java代码中也可以创建为Jigsaw的module。 将限定上下文的边界视为逻辑边界是最常见也是最简单的一种形式。...当每个限界上下文都被物理隔离时,一个限界上下文的开发人员就不能调用另一个限界上下文的方法,或者将数据存储在共享结构中了,这可以避免因为共享带来的耦合。下图为危机分析系统的架构: ?...倘若架构被设计为数据库共享,且两个服务需要操作同一张数据表(这张表被称之为“共享表”),则传递了一个信号,即我们的设计可能出现了错误: 遗漏了一个限界上下文,共享表对应的是一个被重用的服务:买家在查询商品时...职责分配出现了问题,操作共享表的职责应该分配给已有的服务:舆情服务与危机服务都需要从邮件模板表中获取模板数据,然后再调用邮件服务组合模板的内容发送邮件;实际上从邮件模板表获取模板数据的职责应该分配给已有的邮件服务...共享表对应两个限界上下文的不同概念:仓储上下文与订单上下文都需要访问共享的产品表,但实际上这两个上下文需要的产品信息是完全不同的,应该按照限界上下文的边界分开为产品建表。

1.4K70
  • 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    四、如何构建一个领域的上下文映射图     对于如何构建一个上下文映射图,分为思想和操作2个层面。     首先思想层面需要引入2个空间的概念:问题空间和解决方案空间。     ...共享内核具有特殊的状态,在没有与另一个团队协商的情况下,这种状态是不能改变的。我们应该引入一种持续集成过程来保证共享内核与通用语言的一致性。...但是,当共享内核,合作关系或客户方——供应方关系无法顺利实现时,此时的翻译将变得复杂。对于下游客户来说,你需要根据自己的领域模型创建一个单独的层,该层作为上游系统的委派向你的系统提供功能。...【为每个防腐层定义相应的领域服务】     ⑥开放主机服务(Open Host Service):定义一种协议,让你的子系统通过该协议来访问你的服务。并且需要将协议公开。    ...【图6,点击图片查看大图】 六、结语     以上的每个环节都应该尽可能有领域专家参与,这样才能得出最符合实际的上下文映射图。

    1.5K30

    【深度知识】GO语言的goroutine并发原理和调度机制

    CSP并发模型是在1970年左右提出的概念,属于比较新的概念,不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。...messages:= make(chan int) 这样就声明了一个阻塞式的无缓冲的通道 chan 是关键字 代表我要创建一个通道 3.GO并发模型的实现原理 我们先从线程讲起,无论语言层面何种并发模型...我们现在的计算机语言,可以狭义的认为是一种“软件”,它们中所谓的“线程”,往往是用户态的线程,和操作系统本身内核态的线程(简称KSE),还是有区别的。...这种模型直接调用操作系统的内核线程,所有线程的创建、终止、切换、同步等操作,都由内核来完成。一个用户态的线程对应一个系统线程,它可以利用多核机制,但上下文切换需要消耗额外的资源。C++就是这种。...G会有很多个,每个P会将Goroutine从一个就绪的队列中做Pop操作,为了减小锁的竞争,通常情况下每个P会负责一个队列。 三者关系如下图所示: ? 以上这个图讲的是两个线程(内核线程)的情况。

    1.7K20

    Go语言中常见100问题-#56 Concurrency isn’t always faster

    Go1.4中一个goroutine占用的内存为2KB,线程的大小取决于操作系统,例如在Linux/x86-32上,线程的默认大小为2MB. goroutine因为占用的内存更小,所以在上下文切换时也更快...Go运行时处理两种队列,每个P有一个本地队列,还有一个全局队列,全局队列在所有的P中是共享的。...上图中有5个M(M0-M4),然而GOMAXPROCS设置的为4.正如我们所提到的的,在需要时运行时可以创建比GOMAXPROCS更多的操作系统线程。P0,P1和P3正在忙着执行G....归并排序算法的工作原理是将一个数组重复分解为两个子数组,直到每个子数组中包含一个元素,然后按顺序合并这些子数组,从而得到一个排序的数组。...每次split操作将一个数组分割为两个子数组,merge操作将两个子数组合并为一个有序的数组。

    40340

    fork函数简介_fork()&&fork()

    当你的程序执行到下面的语句:pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。...文件描述符表:用户区的一部分,除非通过使用文件描述符的函数,否则程序无法对其进行访问。对进程中每个打开的文件,文件描述符表都包含一个条目。 系统文件表:为系统中所有的进程共享。...若2个进程同时打开一个文件(如上图A,B)做读操作,每个进程都有自己相对于文件的偏移量,而且读入整个文件是独立于另一个进程的;如果2个进程打开同一个文件做写操作,写操作是相互独立的,每个进程都可以重写另一个进程写入的内容...个条目);但是关于标准输入,标准输出,标准错误,父子进程还是共享的。...(自己添加:因为FORK是复制产生一个新的进程,因此新的进程与旧的的进程之间的上下文,如寄存器上下文等是一致的,也就是说两个进程的变量值,PC指针值也是一样的,因此两个进程都是在同一个位置开始运行)

    1.2K21

    《CLR via C#》笔记:第5部分 线程处理(1)

    (P591 last2) Microsoft 设计新的OS内核时,决定在一个进程中运行应用程序的每个实例。进程实际是应用程序的实例要使用的资源的集合。...所以,无法为每一次上下文切换的时间开销给出确定值,甚至无法给出估计值。唯一确定的是,要构建高性能应用程序和组件,就应该尽量避免上下文切换。...(不过我倒是见过极客湾把手机刷成Windows系统上面玩孤岛危机,而且还能有3-5帧的FPS,这还是底层指令集并不是很兼容的情况下,就离谱) 图片 线程调度 Windows采用的算法:每个线程的内核对象都包含一个上下文结构...每CLR一个线程池,这个线程池由CLR控制的所有AppDoamin共享。一个进程有多个CLR,每个CLR有自己的线程池。(P612 1) 在内部,线程池维护一个操作请求队列。...(P625-P627) 任务工厂:有时需要创建一组共享相同配置的Task对象。为避免机械地将相同的参数传给每个Task的构造器,可创建一个任务工厂来封装通用的配置。

    62310

    go进阶(1) -深入理解goroutine并发运行机制

    中一个goroutines就是一个执行单元,而每个程序都应该有一个主函数main也就是主Goroutines。...关键字,这次调用就会在一个新的goroutine中并发执行。...CSP并发模型是在1970年左右提出的概念,属于比较新的概念,不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。...它可以做快速的上下文切换。缺点是不能有效利用多核CPU。 内核级线程模型 这种模型直接调用操作系统的内核线程,所有线程的创建、终止、切换、同步等操作,都由内核来完成。...G会有很多个,每个P会将Goroutine从一个就绪的队列中做Pop操作,为了减小锁的竞争,通常情况下每个P会负责一个队列。 三者关系如下图所示: 以上这个图讲的是两个线程(内核线程)的情况。

    4K31

    (三)DDD上下文映射图——老师,我俩可是纯洁的男女关系!

    上下文映射图可以画在一个显著的位置,这样团队的每个成员都可以清晰便捷的看到。...在此模式下,两个团队在迭代开发上面的沟通会非常的频繁,因为只有同步了大家的研发计划,才可以保障能够在同一个迭代中发布新的功能或对旧的功能进行修复。...为什么这是不太好的味道呢,就是因为在这个模式下,上游团队并不在意下游团队的需求,你想用我的东西,你就需要遵守且“侍奉”我。...上下文映射图在项目中的应用 高层面确定上下文映射图 比如在创建电子商城网站最初,我们考虑要有一个商品展示且可以售卖的功能,那么最初通常由于研发团队规模小,为了应对快速的开发迭代,代码都是在一个项目中进行开发维护的...比如,库存上下文需要获取一个商品的详细信息,那么商品上下文所返回JSON格式如下所示: 那么在防腐层中,会执行转译操作,即将JSON映射到本地模型中的值对象,如下所示: 细心的同学们可能发现了,这里记录颜色使用的是

    24640

    【Kubernetes系列】Pod

    Pod是一组(一个或多个) 容器 ; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。...在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。 就 Docker 概念的术语而言,Pod 类似于共享名字空间和文件系统卷的一组 Docker 容器。...Pod 操作系统 你应该将 .spec.os.name 字段设置为 windows 或 linux 以表示你希望 Pod 运行在哪个操作系统之上。 这两个是 Kubernetes 目前支持的操作系统。...对运行中的 Pod 的某些字段执行就地更新操作还是可能的。不过,类似 [patch] 和 [replace] 这类更新操作有一些限制: Pod 的绝大多数元数据都是不可变的。...kubelet 自动尝试为每个静态 Pod 在 Kubernetes API 服务器上创建一个镜像 Pod 。

    59230

    「领域驱动设计」集成有界上下文的策略

    每个有界的上下文应该有一个内部模型,团队的所有成员都能清楚地理解这个模型。这很重要,因为在大多数组织中,某些术语在不同的部门或业务领域有不同的含义。...这些类型的集成的问题是,您可以发现自己处于无限多的情况中。例如,您可能会发现自己受制于第三方服务,或者您可能负责为现有遗留系统提供接口。 我将在本文中讨论许多不同的集成策略。...想象一下,我们以顾问的身份进入一家现有的线下零售商,为该公司创建一个新的在线电子商务网站。 这家公司已经在商业大街上经营了很多年,所以它已经有了现有的股票管理、分销和金融系统。...我们的任务是创建一个电子商务网站,可以接口与公司现有的系统,提供一个无缝的销售新渠道。 我们的新开发项目显然是一个新的有界的环境,在组织作为一个整体的环境地图的范围内。...然而,当您的应用程序需要与许多其他现有系统集成时,拥有所有这些翻译层可能会变得难以处理。 不是为每个集成提供一个独立的翻译层,而是提供一组可由任何其他有界上下文使用的服务。

    56370

    Spring Bean的作用域管理1. singleton2. prototype3. Request4. session5. global session

    singleton 全局只有一个共享的实例,所有将单例Bean作为依赖的情况下,容器返回将是同一个实例 换言之,当开发者定义一个Bean的作用域为单例时,Spring IoC容器只会根据Bean定义来创建该...Request Spring容器会在每次用到loginAction来处理每个HTTP请求的时候都会创建一个新的LoginAction实例。...它们也与纯Web应用程序上下文相关联。注解为Session作用域的Bean对于每个用户的会话仅创建一次。他们在会话结束时被破坏销毁掉。...我们可以通过打开两个浏览器的测试页(/test)来观察它。每个都将初始化一个新的会话Session,因此也就创建新的ShoppingCartSession bean实例。...通过它,一个bean可以通过应用程序中的多个portlet共享。 至此,我们解释了请求和面向会话的作用域。第一个的作用是在每个request请求上创建新的bean。

    2K100

    浏览器内核之渲染基础

    再次,第三个 layer 层,因为 JavaScript 代码为 “canvas” 元素创建了一个 WebGl 的 3D 绘图上下文对象,WebKit 需要重新生成一个新的 RenderLayer 对象...3D 绘图上下文,而不是在遇到 ”canvas“ 元素时创建新的 RenderLayer 对象。...在 WebKit 中,绘图操作被定义了一个抽象层,就是绘图上下文,所有绘图的操作都是在该上下文中来进行的。...RenderWidget 类调用 TransportDIB 类来创建共享内存,内存大小为绘制区域的 高X宽X4 ,同时调用 Skia 图形库来创建一个 SkCanvas 对象。...总结 一个 RenderObject 对象保存了为绘制 DOM 节点所需要的各种信息 RenderObject 树是基于 DOM 树建立起来的一棵新树,是为了布局计算和渲染等机制而构建的一种新的内部表示

    84020

    OpenGL ES编程指南(一)

    您的应用程序应该测试上下文的API属性并使用它来选择正确的呈现路径。 实现此行为的常见模式是为每个呈现路径创建一个类。 您的应用程序在初始化时测试上下文并创建一次渲染器。...相反,OpenGL ES对象由EAGLSharegroup对象创建和维护。每个上下文都包含一个EAGLSharegroup对象,它将对象创建委托给它。...当您希望您的应用程序能够在渲染器的主线程以外的线程上创建新的OpenGL ES对象时。 在这种情况下,第二个上下文运行在单独的线程上,专门用于获取数据和创建资源。...要创建引用相同Sharegroup的多个上下文,首先通过调用initWithAPI来初始化第一个上下文: 会自动为上下文创建Sharegroup。...以下是您的应用程序应该遵循的更新OpenGL ES对象的步骤: 在每个可能使用该对象的上下文中调用glFlush。 在想要修改对象的上下文中,调用一个或多个OpenGL ES函数来更改对象。

    2.1K20

    领域驱动设计——术语篇

    《领域驱动设计》一书对通用语言的重要性进行了较大篇幅的强调,在整个软件生命周期中,无论是口头交流还是书面表达都应该使用通用语言。个人认为,对团队新成员进行通用语言培训是有必要的。...在实现时,可能表现为在上下文A中为实体,在上下文B中为值对象。例如,“地址”,在订单上下文,它是值对象。但在地址维护子系统,它是实体。...聚合(Aggregate)聚合是一组相关对象的集合,我们把聚合作为数据修改的单元。聚合根:聚合中一个代表聚合核心概念的实体。每个聚合有且仅有一个聚合根。外部只能通过引用聚合根,查询、修改聚合内部数据。...* 聚合的识别是实际操作中的难点,可以采用自下而上的方法,先将每个实体作为一个聚合,不断组合出合适聚合。...在软件设计初期,不同限界上下文可能会共享数据库,以降低成本,但仍需要注意分库,或者分表,并避免联合查询,及表间外键的级联更新、删除。限界上下文可以作为微服务的边界。

    83210

    2021-Java后端工程师面试指南-(SSM)

    request:请求,每次Http请求创建一个新对象,适用于WebApplicationContext环境下。 session:会话,同一个会话共享一个实例,不同会话使用不用的实例。...对于原型Bean,每次创建一个新对象,也就是线程之间并不存在Bean共享,自然是不会有线程安全的问题。 对于单例Bean,所有线程都共享一个单例实例Bean,因此是存在资源的竞争。...这样每个servlet 就持有自己的上下文,即拥有自己独立的bean空间,同时各个servlet共享相同的bean,即根上下文(第2步中初始化的上下文)定义的那些 bean。...prepareRefresh() 方法:为刷新准备新的上下文环境,设置其启动日期和活动标志以及执行一些属性的初始化。...因为其实如果我们没有mybatis 我们也可以做数据库操作对吧,那就是jdbc 的操作呗,那其实mybatis就是在封装在jdbc之上的一个框架而已,它所需要做的就是那么多,我来总结下 首先就是一些基础组件

    89530

    大白话讲透 Chromium 源码(宏观篇)

    Handles应该总是按值传递(地址也是值,一般用16进制)(除了像out-parameters这样的情况--我并不知道这句个out-parameters是指什么,不过对本文应该没影响),并且它们不应该在堆上分配...这意味着当Handles们被创建在有效的HandleScope内部时,一定是位于栈上。...所以得蹦出个Handle,来帮你管理这个对象的地址,你拿着Handle就行。你可以理解为Handle是一个指向指针的指针;一个智能的指针。 我没讲明白是吧?行,给宝宝我愁的啊,上图!...难道你没发现:你给js对象添加属性,js数组push元素之后,再去做恒等比较时,结果仍为true。 你没想过为啥吗?你总不会认为它不是分配新的内存空间,而是在原有内存后面加内存吧??????...还是再贴一点点源码吧,在 NewScriptContext 方法里,框起来的都是经过一堆操作后的入口,每个入口后面又会调N个函数,我贴的其他源码图也是这样,毕竟v8这么大,chromium那么那么大。。

    4.4K22

    以下30张进程和线程基础知识图片全家桶,让你一次全部掌握

    创建进程的过程如下: 为新进程分配一个唯一的进程标识号,并申请一个空白的 PCB,PCB 是有限的,若申请失败则创建失败; 为进程分配资源,此处如果资源不足,进程就会进入等待状态,以等待资源; 初始化...CPU 上下文切换就是先把前一个任务的 CPU 上下文(CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。...需要有一种新的实体,满足以下特性: 实体之间可以并发运行; 实体之间共享相同的地址空间; 这个新的实体,就是线程( Thread ),线程之间可以并发运行且共享相同的地址空间。 什么是线程?...举个例子,对于游戏的用户设计,则不应该使用多线程的方式,否则一个用户挂了,会影响其他同个进程的线程。...操作系统必须另外一个进程运行; 从运行态 -> 结束态:当进程退出结束后,操作系统得从就绪队列选择另外一个进程运行; 因为,这些状态变化的时候,操作系统需要考虑是否要让新的进程给 CPU 运行,或者是否让当前进程从

    85173

    100 个 Go 错误以及如何避免:5~8

    因此,我们不必为每个测试用例创建一个文件。每个测试用例都是独立的,提高了测试的可读性和可维护性,因为我们不必打开另一个文件来查看内容。...由validateCoordinates返回的每个错误现在都被包装起来,为错误提供额外的上下文:它是与源坐标相关还是与目标坐标相关。...图 8.2 复制咖啡店里的一切 在这个新过程中,系统的每个部分都是独立的。咖啡店应该以两倍的速度为消费者服务。这是一个咖啡店的并行实现。 如果我们想扩大规模,我们可以一遍又一遍地复制服务员和咖啡机。...请注意,为什么我将阈值设置为 2,048?因为这是我的机器上这个特定工作负载的最佳值。一般来说,这种神奇的值应该用基准仔细定义(在类似于生产的执行环境中运行)。...这样,我们在发布消息时减少了父 goroutine 中的潜在争用。我们迭代n次来创建一个从共享通道接收的新的 goroutine。收到的每条消息都通过执行task和自动递增共享计数器来处理。

    89840

    领域驱动设计

    故事:注册一个课程 作为寻找培训的人 我需要预定一个课程 这样我就可以学习并提高我的技能 这个故事描述了一个希望实现某些东西(“预订课程”)的角色(“寻找培训的人”),以达到一些目的(“学习和提高我的技能...上下文边界 对于每一个模型,应该有意和明确地去定义其所处的上下文。创建上下文并没有特定的规则,但重要的是让每个人都能理解上下文的边界条件。...上下文映射模式 用于上下文映射的模式有很多,其中的一些将在下文中得到解释。 共享内核 共享内核是一个有限上下文,它通常是领域的一个子集,供不同团队分享,而这需要团队之间的良好沟通和协作。...服务层 有时候不可能将一个行为分配给任何一个类,无论是实体还是值对象。很多场景都是对多个类进行操作的纯粹的功能运算,而不是一个单一的类为该行为负责。...聚合拥有一致性边界,使得边界内的类与对象图的其他部分“断开连接”。每个聚合都有一个实体作为聚合的“根”。 当我们创建聚合时,要确保聚合仍然被视为领域中的有意义的单元。

    1K90
    领券