Linq to SQL 存储库是否应该实现 IDisposable

2024-03-20

在过去的几天里,我一直在使用 Linq 谷歌搜索大量有关存储库模式的信息。那里有很多信息,但它们往往是矛盾的,我仍在寻找明确的来源。

我仍然不确定的一件事是存储库是否应该实例化它自己的 DataContext 并具有 SubmitChanges 方法,或者是否应该注入 DataContext 并在外部处理提交。我看过这两种设计,但没有对其推理进行真正的评论。

无论如何,以下模式很常见

class Repository<T>
{
    DataContext db = new LinqDataContext();

    public IEnumerable<T> GetAll() { ... }
    public T GetById() { ... }

    ... etc

   public void SubmitChanges() { ... }
}

所以我的主要问题是,通过上述实现,为什么存储库不需要实现 IDisposable?我已经看到了上面数百个示例,但它们似乎都没有费心处理 DataContext。这不是内存泄漏吗?


处置 DataContext 会关闭底层连接如果您将自动关闭设置为 false。如果你不调用dispose,你就得等待GC帮你调用。您应该实现 IDisposable 并处置您的存储库,而存储库又应处置其 DataContext。

另一个解决方案是,如果您的方法不能在单个事务中协同工作,则为存储库中的每个方法创建一个新的数据上下文。然后,您可以在通过 using() 指令使用上下文后立即处理它们。

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

Linq to SQL 存储库是否应该实现 IDisposable 的相关文章

  • 双缓冲列表框

    我有一个 CheckedListBox WinForms 控件 它继承自 ListBox 谷歌搜索显示问题出在 ListBox 该控件锚定到其窗体的所有四个边 当调整表单大小时 列表框会出现难看的闪烁 我尝试继承 CheckedListBo
  • 以编程方式在网格视图列上显示数据

    我有一个产品数量列表和一个网格视图 网格视图已经绑定到一些数据 但我想在网格视图的第三列显示产品数量列表 以下是如何将数据绑定到网格视图的代码 gvProduct DataSource distSPUItem gvProduct DataB
  • 强制 const 存储返回的值 value

    这就是我想要实现的目标 struct test const test returnconst return test test returnnonconst return test int main test t1 returnnoncon
  • 你好世界,裸机 Beagleboard

    我正在尝试在我的 Beagleboard xm rev 上运行 hello world 类型的程序 C 通过调用 Cputs功能来自装配 到目前为止 我一直使用这个作为参考 http wiki osdev org ARM Beagleboa
  • 在 IEnumerable 中查找相同的集合

    有一项任务要弄清楚如何更新表 DataTable 连接到一个database没有UPDATE陈述 我想出的例子是从邮箱中读取警报 该表将写入 Alerts 如果邮件正文包含单词 SUCCESS gt Alert 变为绿色 如果 FAIL g
  • 在 std::forward 中它如何接受右值?

    看看斯科特 迈耶的有效的现代 C 第200 201页 建议的简化实施std forward可能是 在其他地方看到了正确的实现 template
  • 管理多个解决方案中存在的 C# 项目的 Nuget 包

    我现在正处于这样的阶段重构疯狂一个有很多的大项目遗留和不稳定的模块 我决定拆分解决方案目前 所有项目 大约有 20 个 而且由于下个月肯定会出现单元测试项目 还会有更多 链接在一起 使其更加独立和细化 通过这种方法 有一些模块 例如需要在多
  • 有了private修饰符,为什么可以直接访问其他对象中的成员呢?

    我有以下代码 class A private int x public A x 90 A A a1 A a2 a1 x 10 a2 x 20 int getX return this gt x 我知道代码可能很奇怪 但我不明白为什么a1 a
  • 轮廓积分算法 C++

    我正在尝试编写一个应用数学程序来计算复平面中的轮廓积分 对于初学者来说 我想为梯形方法编写一个算法 但我有点坚持理解它会是什么样子 毕竟 我们通常将梯形方法视为 2D 图 而这里我们有 f C gt C 所以我们谈论的是 4D 最终我希望用
  • flowlayoutpanel和水平滚动条问题

    我正在使用一个 flowlayoutpanel 它有很多逻辑上的按钮 我遇到的问题是 当我调整窗口大小时 当窗口变小时 我无法看到所有水平排列的按钮 相反 当窗口变小时 按钮会下降到下一行 谁能帮我解决这个问题 我只是希望按钮水平排列 当窗
  • 在 .NET Core 上通过 MEF 将参数传递给插件构造函数?

    我花了几个小时试图弄清楚如何通过 MEF System Composition 将参数传递给插件构造函数 但一切都无济于事 不用说 相关文档很少 查看源代码也没有帮助 这曾经非常容易做到 使用 CompositionHost Compose
  • 在 C# 中给定周数和年份,计算一周的开始和结束日期(基于 ISO 规范)

    我需要生成一份报告 显示一年中的 52 周 或某些年份的 53 周 及其开始日期和结束日期 有一个 ISO 规范可以做到这一点 但看起来非常复杂 我希望有人知道在 C 或 Visual Basic 中执行此操作的方法 实际上适用于 Visu
  • 给出对象的指针作为参数

    假设我有 void func foo obj 我有 foo object 我该如何制作object进入争论func 只需取消引用它即可 func object
  • 在浏览器中测试wcf服务

    我无法在浏览器中调用基本的 wcf web 方法 即使使用
  • 创建 PING 程序时限制 ICMP 回显答复

    我正在编写一个多线程 ping 程序 我在每个线程 针对每个 IP 上创建了原始套接字 并使用 sendto 向每个线程发送了 ICMP Echo 请求 然后在每个线程中执行了 receivevfrom 我正在从各种套接字中的 IP 获取消
  • 等效

    这是否保证始终为真 std numeric limits
  • 如何在 OpenCV 中删除 mouseCallback

    在使用 C 的 OpenCV 中 有没有办法删除 mouseHandler int event int x int y int flags void param 通过函数添加到窗口 image window cv setMouseCallb
  • 从资源文件获取 DisplayName [重复]

    这个问题在这里已经有答案了 我在 App GlobalResources 文件夹中有特定于文化的资源文件 现在我需要从此资源文件中读取 DisplayName 属性的值 我在用 Display Name MerchantName Resou
  • 为 winforms ComboBox 中的单个项目着色?

    我遇到了一个困境 我有一个表单 其中包含许多组合框 其中包含在某些情况下可能无效 过时的信息 选项 项目 我不能简单地从项目中删除过时的信息 但我确实想在选项无效时为用户提供视觉线索 我正在考虑对项目进行着色 可能是红色 来指示它们是否无效
  • 文件按文件名模式存在

    我在用 File Exists filepath 我想做的是将其替换为模式 因为文件名的第一部分发生了变化 例如 该文件可以是 01 peach xml 02 peach xml 03 peach xml 如何根据某种搜索模式检查文件是否存

随机推荐

  • ng-change 不适用于 ng-select

    我正在使用一个由以下内容填充的选择框ng options 不幸的是 我无法得到我的ng change要调用的函数 这是我的小提琴 http jsfiddle net MTfRD 1097 这是我的js var myApp angular m
  • 什么是最好的 UTF [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Spring Boot 和 Netflix Zuul 的简单反向代理

    我正在寻找使用 Spring Boot 实现一个简单的反向代理 即 轻松添加路线 能够在每个路由的基础上添加自定义身份验证 根据需要添加其他标头 我查看了提供的设施 EnableZuulProxy注释 但它似乎太重量级了 因为我不想使用 E
  • html 表格中的等高缩放单元格

    当我进行此设计时 我在使用 HTML 表格时遇到了一些问题 左侧单元格是 rowspan 2 单元格 右侧两个单元格使用 height 50 属性 以下是预期的行为 Equal height cell 1 Scaling height ce
  • 为什么我的视图右上角有一个“加号”图标?

    我正在尝试为我的应用程序实现拖放功能LazyHGridview 当我尝试将视图放到另一个视图上时 视图的右上角会显示一个绿色圆圈内的 加号 图标 struct TestView View var d GridData Binding var
  • clrscr() 无法在 VC++(VS 2008) 中工作......?

    在 VS 2008 中 我在 VC 中创建了一个空项目 并添加了一个源文件作为 include
  • iOS 共享扩展不适用于图像网址

    我有一个使用这些规则的共享扩展
  • 什么时候应该使用布尔值而不是布尔值? [复制]

    这个问题在这里已经有答案了 什么时候应该使用布尔值而不是布尔值 我的意思是 为什么我想在应该包含 true 或 false 的变量中包含一个空值 大多数人 一个自发的答案是 如果该值未知 即 如果我们不知道该值是真还是假 但从编程的角度来看
  • 简单的域名正则表达式

    如何确保域名符合这 3 个简单标准 以 com net 结尾 不得以 http 或 https http www 或 https www 我已经设法理解了正则表达式的这一部分 它与第一个标准相对应 com net 但我不知道如何实现另外两个
  • 如何“执行”make文件

    我尝试在 code blocks 中使用 make 文件 但我做错了 我安装了包含编译器的版本 http sourceforge net projects codeblocks files Binaries 10 05 Windows co
  • Stripe 支付:来源与令牌/卡?

    我正在努力使用 stripe 设置定期付款 我正在使用react stripe elements来收集卡片信息 看起来有两种方法可以保存卡片供以后使用 this props stripe createToken this props str
  • 这个 gcc/clang 过去一指针比较行为符合还是非标准?

    尽管 C 标准明确认识到这样一种可能性 即指向 刚刚过去 一个对象的地址可能会偶然与指向 指向 另一个不相关对象的地址进行比较 但 gcc 和 clang 似乎都在假设没有指针的情况下进行操作观察到的指向刚刚经过一个对象的对象可能指向另一个
  • 在匿名块内显示选择结果

    我正在尝试调试过程中的 SELECT 并且我正在尝试使用匿名块 我希望 SQL Developer 只返回最后一个 SELECT 语句 但我收到错误 ORA 06550 line 21 column 5 PLS 00428 an INTO
  • 如何在 Dart 中创建私有变量?

    我想创建一个私有变量 但我不能 这是我的代码 void main var b new B b testB class A int private 0 testA print int value private private 5 class
  • Spritekit 动画没有改变

    我的游戏中有一个虚拟控制板 如果我点击并按住方向按钮之一 播放器就会朝正确的方向移动并显示正确的图像和动画 但是 如果我将手指从一个控件滑动到另一个控件 例如从右到下 播放器会向下移动 但图像和动画不会改变 直到我抬起手指 下面是我处理触摸
  • Logback:用 ******** 和最后两位数字替换 10 位数字

    我在我的模式 logback xml 中使用以下内容来替换日志中的 10 位数字 replace msg d 10 这种方法的一个问题是 它还匹配 11 位数字的前 10 位数字 有没有办法精确匹配10位数字 现在更大的问题是我需要显示这个
  • 无法在二进制文件中找到 .dtors 和 .ctors

    我正在读 黑客 剥削的艺术 一书 书中有一节解释了使用 dtors and ctors 我正在尝试重现本书的练习之一 但在我的可执行文件中没有这一部分 起初我以为问题是我正在编译 64 位 但现在我正在编译 32 位并且 dtors and
  • 如何在 Storybook 6.0 中自定义深色和浅色主题

    我正在使用浅色和深色主题制作 PWA 我想创建我的 Storybook 浅色和深色主题来反映这些主题 因此 我创建了一个函数 如果我向它传递 Material UI 主题和基本名称 它将返回一个新的 Storybook 主题对象 但是我如何
  • 仅当配置中的enableSessionState设置为true时才能使用会话状态

    我正在使用 vs 2010 使用 c 开发 Asp net MVC 2 应用程序 当我在调试模式下本地运行我的应用程序时 出现下面提到的错误 错误信息图片如下 错误消息文本如下 仅当enableSessionState设置为true时才能使
  • Linq to SQL 存储库是否应该实现 IDisposable

    在过去的几天里 我一直在使用 Linq 谷歌搜索大量有关存储库模式的信息 那里有很多信息 但它们往往是矛盾的 我仍在寻找明确的来源 我仍然不确定的一件事是存储库是否应该实例化它自己的 DataContext 并具有 SubmitChange