实体框架最佳实践:哪一层应该调用 SaveChanges()?

2024-02-19

对于一个干净的数据模型,我会来回讨论这个......

以审批工作流程为例,假设在我的 Web 应用程序中,我有一个页面,可让用户标记MyEntityObject需要批准。MyEntityObject有一些控制其审批工作流程的属性,因此我有一个通用的实用方法,称为FlagForApproval(MyEntityObject eo).

应该page call 批准标志()仅设置必要的属性,然后调用保存更改()当它准备好或应该时批准标志()保存更改吗?

让实用程序方法保存更改似乎比要求做的要多一点(如果这只是一系列操作中的一个步骤怎么办?),但同时,使页面调用 SaveChanges() 并提交将数据传输到数据库似乎可以被认为与数据层职责太接近。

想法?

(更新:FWIW,到目前为止,我一直有实用程序方法调用 SaveChanges(),这样页面只有一组异常需要处理,无论是验证还是数据。)


我目前对此问题的看法是始终让业务逻辑层在验证数据后调用保存更改。当用户单击“保存”按钮时,我将需要验证的任何实体传递给 BLL,并由它决定是否 SaveChanges()。

我和你一样好奇,想看看其他人怎么说,因为自从我开始使用 EF 以来,这个问题(以及许多其他问题)一直困扰着我。

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

实体框架最佳实践:哪一层应该调用 SaveChanges()? 的相关文章

  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 将目录压缩为单个文件的方法有哪些

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

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • Mockito:想要但没有被调用

    我有以下测试方法 MyClass myClass Mockito mock MyClass class Mockito when myClass methodUsedInMethodBeingTested Matchers any MyTy
  • Python pandas:将字符串拆分为多列并从拆分参数中提取列的数据

    我对 Python 和 Pandas 很陌生 在一列中有一些 URL 路径 我想将其分成单独的列 字符串的每个参数都用分号分隔 我知道关于如何通过分隔符将数据拆分为多个列还有许多其他答案 但是在我的示例中 我想动态创建列并从参数本身提取要放
  • 一次为多个结构实现一个特征[重复]

    这个问题在这里已经有答案了 我有特质FooTrait它有很多功能 我也有结构FooStruct and BarStruct并想要实施FooTrait对于两个结构体 其方法完全相同 有没有办法实现FooTrait对彼此而言FooStruct
  • 我可以将我自己的 Python 类与 numpy 或其他矩阵库一起使用吗?

    我希望能够使用 Python 类作为元素进行矩阵运算 在本例中 是一个简单的伽罗瓦域 http en wikipedia org wiki Galois field执行 它实现了必要的 add mul sub etc 起初 我认为这应该可以
  • Javascript:iFrame 中的事件

    我正在建造一个WYISWYG编辑器与iframe with designMode on 问题是我无法在 Firefox 和 Opera 中的 iframe 上使用任何事件 IE 未经测试 例如我想跟踪 onkeyup 事件 document
  • 如何在 python 中使用带有可选字符的正则表达式?

    假设我有一个字符串 3434 35353 和另一个字符串 3593 如何创建一个能够匹配两者的正则表达式 而无需在另一个失败时将模式设置为其他内容 我知道 d 将匹配3593 但它对3434 35353 but d d 只会匹配带小数的那个
  • 无法在 GCP AI Platform 笔记本上安装 Jupyterlab 扩展

    我在安装 Jupyterlab 扩展时开始遇到以前从未遇到过的问题 安装 Jupyterlab 的新扩展后 我无法构建 我正在使用 GCP AI Platform Notebooks 运行 Jupyterlab 我在 Debian 10 上
  • socket.gaierror: [Errno -2] 名称或服务未知

    我是套接字编程的新手 以下程序是一个从服务器请求文件的客户端程序 但我收到如下所示的错误 我的输入是 GET index html 代码是 谁能帮我解决这个错误 usr bin env python import httplib impor
  • R 可以将表情符号字符转换为对应的文本吗?

    在我昨天的提问中 R 可以读取 html 编码的表情符号字符吗 https stackoverflow com questions 48142634 can r read html encoded emoji characters user
  • jQuery - 使用 .val() 函数检测值变化

    我们都知道使用val 不会触发change事件 所以我们也使用 trigger change 在 后面val 但问题是有人写了val 没有与trigger 这是一个外部文件 我无法编辑它 那么 如何通过如下代码检测值变化 elem on c
  • 多房间预订的数据库设计:一对多

    主要实体 客户 客人 预订 房间分配 我想实现一个多房间预订数据库设计 首先我想先解释一下这个概念 The Client是获得预订的人 The Client一次只能有 1 个预订 The Client可以预订多个房间 The Guest是被
  • 确定最后一个文件块

    我正在尝试为大文件设置通过休息上传的文件 下面的函数负责分块 但我需要能够识别最后一个块 因为我的其余调用更改为 finishUpload 以便提交保存 现在我只能弄清楚 blob 何时为空 但我无法弄清楚如何确定 blob 为空之前的最后
  • python del 与 pandas drop

    我知道这可能是老争论了 但出于pandas drop and python del哪个函数在大数据集上的性能更好 我正在使用机器学习学习python 3并且不确定该使用哪一个 我的数据在pandas数据帧格式 但python del函数在b
  • 无法与Android自定义对话框交互

    好吧 请耐心听我说 因为我还没有那么多地使用自定义对话框 或者根本没有 Android 编程 而且我确信我犯了一个愚蠢的初学者错误 因此 我有一个简单的掷骰子应用程序 我试图将其合并到我现有的应用程序中 但我想将其本质上作为弹出窗口 到目前
  • 动态添加到horizo​​ntalscrollview

    我遵循了一些在线教程 向您展示如何使用多个 xml 文件创建静态水平滚动视图 然而 我希望能够从数据库中获取内容 用内容填充一个新视图 来自库存 xml 布局 然后将其添加到水平滚动视图中 是否有任何教程向您展示如何将动态视图添加到水平滚动
  • Three.js 将对象附加到骨骼

    有什么方法可以将网格连接到骨骼上吗 例如 我加载动画 js 角色 并且想将武器附加到它的手上 可以对 Bone 和 Object3D 原型进行一些简单的修改 由于骨骼继承自 Object3D 因此它们可能有子级 因此我们可以轻松地将网格添加
  • 是否可以通过编程方式运行 Simulink 模型并测量其状态?

    我希望为现有 Simulink 模型设置一个测试集 理想情况下 我可以完全控制模型 明确地步进并测量模型中任何总线上任何信号的状态 正如可能已经收集到的 这是该模型的单元测试系统的前身 因此 我不能真正证明更改模型以适应测试是合理的 测试必
  • 放大镜显示 UIWindow 后面

    我们有一个带有汉堡菜单导航的应用程序 菜单本身是一个位于键窗口后面的窗口 当用户长按一个uitextfield并调出放大镜时 放大镜会显示后面UIWindow的内容 有没有人有任何想法 Video https youtu be CvlLaF
  • fileUpload 在使用 JSF 2.2 的 PrimeFaces 3.5 中不会触发事件

    我无法在 PrimeFaces 3 5 上使用 fileUpload 组件来触发该事件 我读过很多关于该主题的帖子并遵循了那里的建议 但仍然不起作用 我尝试了所有模式 简单 自动 高级 但没有成功 如果我使用 JSF 规范中的标准 inpu
  • 实体框架最佳实践:哪一层应该调用 SaveChanges()?

    对于一个干净的数据模型 我会来回讨论这个 以审批工作流程为例 假设在我的 Web 应用程序中 我有一个页面 可让用户标记MyEntityObject需要批准 MyEntityObject有一些控制其审批工作流程的属性 因此我有一个通用的实用