EF5:如何更改默认的删除功能来实现我自己的

2024-03-02

嗯,这是我的情况:

我们不想删除表中的数据。有一个名为 isDeleted 的列应该更新而不是删除它。

我想使用 EF5 开发随附的 Web 应用程序,但我遇到了问题。我如何实施该限制?

我可以使用存储过程来删除和选择,但我希望有一种方法可以使用 EF 中的标准函数,只需更改它们的工作方式即可。哪种方法不那么困难,我必须采取哪些选择才能实现我想要的目标,因为我猜我不是第一个提出这个要求的人?


您可以重写 DbContext 的 SaveChanges 方法。例如。您想要禁止删除产品。您可以将 IsDeleted 标志设置为 true 来保存实体,而不是删除它们:

public override int SaveChanges()
{
    var deletedPersonEntries = ChangeTracker.Entries<Person>()
                                    .Where(e => e.State == EntityState.Deleted);

    foreach (var e in deletedPersonEntries)
    {
        e.State = EntityState.Unchanged;
        e.Entity.IsDeleted = true;
    }

    return base.SaveChanges();
}

另一种选择 - 如果有人尝试删除产品,则引发异常:

if (deltedProductEntries.Any())
    throw new Exception("You should not delete products!");

您也可以简单地将实体状态设置为不变,但我认为这不是很好的解决方案。

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

EF5:如何更改默认的删除功能来实现我自己的 的相关文章

  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • 设置 runat=server 时输入名称和 id 发生变化

    在我的表单中 我需要插入 文本 类型的不同输入 输入必须是带有名称和 ID 的 html 控件 因为我将此表单发送到外部网址 对于验证 我在所有输入中执行 runat server 然后我可以使用 requiredfieldvalidato
  • 在 System.Xml.XPath 中启用 XPath2 查询(XPathException:无效令牌)

    Microsoft 的 System Xml XPath nuget package 可用于 NET 4 6 声称支持 XPath 1 0 和 2 0 德文档 https msdn microsoft com en us library s
  • .NET 中严格浮点数学的库

    我有 Java 算法 计算及其单元测试 单元测试期望结果具有一定的精度 增量 现在我将算法移植到 NET 中 并希望使用相同的单元测试 我使用双数据类型 问题在于 Java 使用 strictfp 64 位 来执行 Math 类中的某些操作
  • ASP.NET MVC ActionFilterAttribute 在模型绑定之前注入值

    我想创建一个自定义操作过滤器属性 该属性在模型绑定期间可访问的 HttpContext 项中添加一个值 我尝试将其添加到 OnActionExecuting 中 但似乎模型绑定是在过滤器之前执行的 你知道我该怎么做吗 也许模型绑定器中有一个
  • C#:询问用户密码,然后将其存储在 SecureString 中

    在我目前为客户开发的小型应用程序中 我需要询问用户他的 Windows 登录用户名 密码和域 然后使用这些信息系统 诊断 进程 启动启动一个应用程序 我有一个带有 UseSystemPasswordChar 的文本框来屏蔽输入的密码 我需要
  • DataGridView 中的 C# FormatException

    我创建了一个带有一些列的 DataGridView 订单列仅允许用户输入 int 数字 当我输入 j 例如 时 它会抛出 FormatException 并且我尝试添加 try catch 来解决问题 但它看起来不起作用 private v
  • 如何为从源文件编译的应用程序分配自定义图标?

    在我的程序中 我使用 CSharpCodeProvider 来从源文件编译另一个应用程序 我使用的代码如下 public static bool CompileExecutable String sourceName FileInfo so
  • 序列包含多个元素

    我在通过 Linq 获取 RhsTruck 类型的列表并显示它们时遇到一些问题 RhsTruck 只有属性 品牌 型号 序列号 等 RhsCustomer 具有 CustomerName CustomerAddress 等属性 我不断收到错
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • ConcurrentBag 中可能存在内存泄漏吗?

    我一直在研究新的并发集合 特别是 ConcurrentBag 引起了我的注意 由于 ConcurrentBag 在每个单独的线程上内部保存一个本地集 使用它来跟踪项目 这意味着当线程本身超出范围时 ConcurrentBag 仍将在内存中引
  • 我有三个共享相同数据库的项目,在所有项目中使用 EF 的最佳方法是什么?

    我有三个项目 WCF 项目 而不是客户端 我有一个数据库供所有项目使用 现在我将如何使用 EF 我应该创建第四个项目 其中包含数据库上下文和实体 然后在所有三个项目中添加对它的引用吗 或者我应该为每个项目提供单独的上下文 然后添加每个项目所
  • 类库的 app.config 中的绑定重定向有什么作用吗?

    我经常使用的 VS 解决方案包括单个可执行项目 控制台应用程序 网络应用程序 和许多类库项目这些都被可执行文件引用 使用 NuGet 并安装包时 经常会出现app config为每个项目创建的文件 通常只包含合并引用程序集版本的绑定重定向列
  • WPF 媒体格式

    WPF 是否内置对任何音频和视频格式的支持 我将使用 MediaPlayer 和 MediaElement 类来构建一个小型媒体播放器 目前 我不想处理 NET 没有本机支持的编解码器和格式 WPF 默认支持视频格式 WMV MPEG 和一

随机推荐

  • 为引用的程序集引发 FileNotFoundException

    我真的很奇怪FileNotFoundException第一次尝试使用我引用的程序集中定义的类时抛出 程序集没有更改 项目文件中的位置与磁盘上的物理路径正确对应 当我将安装程序添加到 Windows 服务和安装项目时 由两个库项目 一个 Wi
  • iOS8后台获取问题

    我在 ios8 之前使用后台获取没有问题 但在 ios8 中 当我在手机上模拟后台获取时 我首先收到一条错误消息 指出我无权播放声音 因此我没有收到任何本地通知 然后打开应用程序后 应用程序崩溃 我收到这个奇怪的错误 由于未捕获的异常而终止
  • fetch.max.wait.ms 与 poll() 方法的参数

    在提出问题之前 我想指出已经有人提出了类似的问题here https stackoverflow com questions 50302119 apache kafka understanding the relationship betw
  • 是否可以在groovy函数上设置环境变量

    我知道我可以在一个阶段有一个关于詹金斯管道 声明性 的环境部分 像这样 stage Name environment NAME value steps script Do something using these env vars 我想编
  • 删除条件格式

    我正在尝试使用 C 和以下代码添加条件格式 Microsoft Office Interop Excel FormatCondition formatConditionObj null formatConditionObj Microsof
  • 检查对象是否声明为 const

    如果对象被声明为 const 我想中断编译 以下不起作用 include
  • 颤动设计曲线布局

    在颤振中 我知道我们可以画线来设计弧形布局 如下图所示 但我只是在 flutter 上学习这个功能 我无法设计它 也许在 flutter 中我们有一些实现的库或源代码 但我无法找到和设计它 请注意 屏幕右侧和曲线之间的空白可在高度和宽度上调
  • new Object{} 和 new Object(){} 有什么区别[重复]

    这个问题在这里已经有答案了 我用这种方式在 C 中定义类的对象 var something new SomeThing Property SomeProperty 这样 var something new SomeThing Propert
  • 指定的架构无效。错误:同名的多个类型

    我正在 EF 6 中工作 当我尝试运行我的项目时遇到以下问题 指定的架构无效 错误 名称为 TableName 的多种类型存在于 不同命名空间中的 EdmItemCollection 基于约定的映射 需要唯一的名称 而不考虑命名空间 Edm
  • ES6 Map:变换值

    我正在开发一个项目 经常需要转换 ES6 映射中的每个值 const positiveMap new Map hello 1 world 2 const negativeMap new Map
  • 通过blueimp jquery-fileupload异步上传多个文件

    我正在使用 jQuery 文件上传库 http github com blueimp jQuery File Upload http github com blueimp jQuery File Upload 并且我一直在思考如何使用满足以
  • 如果 0 或 "" 删除行:代码可以工作,但速度很慢

    问题 在这个论坛上的录音机和帮助下 我编写了一个代码 用于按钮 i 列有 来自第 25 行 Pcs 或一个数字 我的宏找到 Pcs 并将其更改为 然后宏删除 和 0 填充单元格的长度是可变的 所以我将 500 作为 结束 但它永远不会达到那
  • 当javaFX的控制器不足以显示内容时,它会在末尾显示“...”?

    我的问题是我可以捕获显示 的事件吗 我的意思是javaFX有API来判断内容结尾是否替换为 吗 事实上 我提出这个问题的原因是 现在我们的测试人员希望我们在一个控制器 如标签 上设置一个 TIP 如果它不足以显示 如果内容足以在控制器中显示
  • 在 C# 中产生分段错误的规范方法是什么?

    我对最短 最简洁的 C 代码感兴趣 它将可靠地产生段错误 理想情况下不会直接调用任何非托管代码 你所追求的有点不清楚 但我认为这与迄今为止的任何答案一样好 而且它是你能得到的尽可能少的 System Runtime InteropServi
  • Ionic 列表项单击在另一个 HTML 页面中显示详细信息

    我使用以下代码创建了一个项目列表
  • 使用 Node.js 从 couchdb 检索所有文档

    我正在编写一个简单的测试应用程序来试验 node js 和 couchdb 的功能 到目前为止我很喜欢它 但我遇到了障碍 我已经广泛寻找 但似乎找不到答案 我的测试服务器 一个简单的地址簿 做了两件事 如果用户去localhost 8000
  • 如何将 React 组件导出为 npm 包? Create-React-App 语法错误:意外的标记

    我创建了反应应用程序 名称为 create react app npm 在 src index js 文件中 我导出了组件以在另一个项目中使用它的 npm 包 首先 我在我的主根目录中运行了这段代码 npm run eject然后是我项目的
  • PDFBox 叠加失败

    我使用 PDFBox 1 8 8 并尝试使用以下 scala 方法将 PDDocument 与其他文档叠加 def mergeTest val home System getProperty user home val doc PDDocu
  • Azure DevOps REST API SendMail

    我正在尝试在发布定义的成功阶段后发送邮件 遵循文档 在我的阶段中选中了 OAuth 框 项目收集服务帐户已添加到构建管理员和发布管理员中 但 REST API 的响应是 Azure DevOps Login Page 这是我的脚本 Orga
  • EF5:如何更改默认的删除功能来实现我自己的

    嗯 这是我的情况 我们不想删除表中的数据 有一个名为 isDeleted 的列应该更新而不是删除它 我想使用 EF5 开发随附的 Web 应用程序 但我遇到了问题 我如何实施该限制 我可以使用存储过程来删除和选择 但我希望有一种方法可以使用