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

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

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

  1. 共享Entity-Framework上下文:

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

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

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

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

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

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

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

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

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

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

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

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

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

相关·内容

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

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

51620

限界上下文边界

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

1.4K70

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

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

1.4K30

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

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

1.6K20

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

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

1.1K21

《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构造器,可创建一个任务工厂来封装通用配置。

59210

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操作将两个子数组合并为一个有序数组。

37540

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

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

1.7K20

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

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

22640

【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 。

54330

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

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

53270

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。

1.9K100

浏览器内核之渲染基础

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

80320

OpenGL ES编程指南(一)

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

1.9K20

领域驱动设计——术语篇

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

73610

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

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

88030

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

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

63673

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

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

3.5K22

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

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

78240

领域驱动设计

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

96690
领券