为什么在 WebApi 控制器操作后没有人处置 DbContext?

2024-01-05

我知道各种教程以及针对目标的完整示例WebApi & Entity Framework(甚至来自微软)WebApi像这样的控制器:

public HttpResponseMessage GetInternet(int id) {
    var context = new InternetDbContext();
    var result =
       (from internet in context.Internets
        where internet.Id.Equals(id)
        select internet).FirstOrDefault();
    if(result != null)
       Request.CreateResponse(HttpStatusCode.OK, result);
}

但当我了解到Entity Framework就像两年前一样,我找到的关于该框架的每一个资源都指出了它是多么重要DISPOSE the DbContex in the SHORTEST可能的寿命,例如和 'using'。如今,人们似乎根本不在乎处置任何东西(他们的管理器、存储库、DI 容器......)。

我在这里错过了什么吗? API调用结束时是否会自动释放上下文?或者我必须使用类似的东西HttpRequestMessageExtensions.RegisterForDispose() from http://msdn.microsoft.com/en-us/library/dn153859(v=vs.118).aspx http://msdn.microsoft.com/en-us/library/dn153859(v=vs.118).aspx?


就我个人而言,每当我看到类型实现时IDisposable,我几乎可以肯定我会使用using使用此类型的新实例时的声明。

当变量超出范围时(就像您的情况一样)context当执行返回时变量超出范围GetInternet方法),它的内存最终将被垃圾收集器回收,但这并不意味着任何本机处理程序(例如文件处理程序或数据库连接)将被关闭,这可能会对您的应用程序产生非常严重的负面影响。

所以,考虑always包裹一个IDisposable进入using构造:

using (var context = new InternetDbContext())
{
  // Your code goes here
}

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 WebApi 控制器操作后没有人处置 DbContext? 的相关文章

  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 带有 Odata Next Page 和 Count 的 Web Api 未出现在 JSON 响应中

    我有一个 webapi 方法 我想打开 oData 分页等 我按照中的例子http www asp net web api overview odata support in aspnet web api supporting odata
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 归一化编辑距离公式解释

    基于本文 IEEE PAITERN 分析交易 归一化编辑距离的计算及应用本文归一化编辑距离 http www csie ntu edu tw b93076 Computation 20of 20Normalized 20Edit 20Dis
  • 超级模糊纹理 - XNA

    当我近距离观察纹理时 我的纹理似乎变得非常模糊 我正在创建一个类似 Minecraft 的地形 我希望纹理能够像素化 就像它是制作出来的一样 而不是 XNA 尝试为我平滑它 它的显示方式如下 任何建议将不胜感激 它与抗锯齿无关 它与硬件如何
  • JS 对象按键顺序

    即使将新值分配给某个键 javascript 是否也能保证保留对象的键序列 例如 如果我有以下对象 var Object keyX value1 keyB value2 keyZ value3 如果我使用迭代键for in 我得到正确的顺序
  • 向 Magento 中的属性选项添加新值

    我正在尝试使用脚本向 Magento 中的属性选项添加新值以加快该过程 因为我有 2 000 多个制造商 这是我用来执行此任务的一段代码 创建自定义模块 使用模块创建器 http www magentocommerce com extens
  • JAXBContextFactory 地狱 - java.lang.ClassNotFoundException:com.ibm.xml.xlxp2.jaxb.JAXBContextFactory

    我在我的开发环境中不断收到以下错误 我用 火星日食 4 5 1 Oracle JDK 1 7 内部版本 1 7 0 79 b15 或 1 8 内部版本 1 8 0 65 b17 Apache Ant 运行代码以及 Eclipse 运行代码
  • ELF 格式操作

    我有一个要求 我想关联一个index与一个文件 以某种格式 我想知道我是否可以进行任何 ELF 操作 并且仍然确保保持一致性 以便该文件在 Linux 上正常工作 这里的想法是创建一种文件格式 可以通过某个 API 自定义 查询该文件格式以
  • GWT - 如何在超级开发中查看java异常堆栈跟踪?

    我正在使用 GWT Super Dev 并在 Chrome 中激活了源映射 尽管我可以在 源 选项卡中看到 Java 类 但我不知道如何查看未处理异常的完整堆栈跟踪 那么我该怎么做呢 有一个悬而未决的问题 http code google
  • 给定一个数组 [a1b2c3d4] 转换为 [abcd1234]

    限制条件 O 1 空间 准时 这不是一个家庭作业问题 只是我遇到的一个有趣的问题 以下是我能想到的一些解决方案 但在给定的限制下没有任何解决方案 Method 1 具有 O n 内存 递归地将数组分为两部分 继续划分直到每个子问题的大小 对
  • 是否可以构建一个交互式 C shell?

    我只是想知道这是否可以使用 Python Java 或 C 我正在寻找类似 IPython for Python 的东西 是的 这样的东西已经存在 你只需要用谷歌搜索即可 Ch http en wikipedia org wiki Ch i
  • 如何在从另一个活动返回时保留 Recyclerview 的滚动位置?

    我看到了很多关于这个主题的相关问题 但没有一个对我有帮助 我正在使用一个交错网格布局对于我的 RecyclerView 显示cards 每个 CardView 都会打开一个新活动 我面临的问题是 在从该新活动返回时 RecyclerView
  • React - 无法使用 CSS 模块设置 React 路由器导航链接的活动状态样式

    Goal 我正在尝试使用 css 模块将样式应用到侧栏中的活动路线 但是我想保留基本样式 分配 2 个类 我试过这段代码
  • x 轴上时间戳的格式

    我正在尝试格式化天气数据图中的 x 轴 我对 y 轴很满意 但我所有将 x 轴变成合适的 人类可读格式的尝试到目前为止都不起作用 因此 经过几个小时的尝试和错误 我希望对您有所帮助 我想要实现的目标 最后 我希望每 30 分钟有一个刻度线
  • 如何在 Windows 上更新 npm?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 I tried this http davidwalsh name upgrade no
  • 从 python **快速** 截取屏幕截图

    A PIL Image grab 大约需要0 5秒 这只是将数据从屏幕获取到我的应用程序 而不需要我进行任何处理 FRAPS http www fraps com 另一方面 可以拍摄高达 30 FPS 的屏幕截图 有什么方法可以让我在 Py
  • open_basedir, File() 不在允许的路径内

    我在使用安装在 Media Temple DV 上的 Laravel 时遇到问题 tempnam open basedir restriction in effect File is not within the allowed path
  • 如何使用 PCL 打印

    我有 Xerox workcenter 7120 这台打印机位于网络上 我想打印pdf文件与PCL命令来自Linux主持人 我的打印机支持PCL 但我不知道如何在打印机上发送打印作业PCL 我找到了这个文件如何解释所有PCL命令pcl命令施
  • 在GCS存储桶名称中使用project-id有什么风险?

    我一直在我的 GCS 存储桶名称中使用项目 ID 作为前缀 以便轻松获得唯一的名称 当我阅读时GCS 最佳实践 https cloud google com storage docs best practices naming 它明确表示不
  • 参考:为什么我使用 json_encode 编码的“特殊”Unicode 字符很奇怪?

    当使用 特殊 Unicode 字符时 它们在编码为 JSON 时会变成奇怪的垃圾 php gt echo json encode foo gt 馬 foo u99ac 为什么 我的编码有问题吗 This is a reference que
  • Rails 3:无需导入即可访问 twitter bootstrap 变量 + mixins

    我是第一次使用 Rails 3 尤其是 asset pipeline 和 less rails bootstrap 所以我可能会在这里遗漏一些非常基本的概念 我尝试了两种将 Twitter bootstrap CSS 包含到我的项目中的方法
  • 为什么在 WebApi 控制器操作后没有人处置 DbContext?

    我知道各种教程以及针对目标的完整示例WebApi Entity Framework 甚至来自微软 WebApi像这样的控制器 public HttpResponseMessage GetInternet int id var context