实体框架代码优先软删除延迟加载

2023-11-29

所以我首先使用实体​​框架代码(所以没有.edmx) 我有一个带有 bool IsEnabled 的基实体类来执行软删除

我正在使用存储库模式,因此可以使用 IsEnabled 过滤掉针对存储库的所有查询。

但是,每当我使用存储库获取 IsEnabled 的 MyType 时,延迟加载 MyType.Items 可能意味着无法启用 Items。

有没有一种方法,也许可以使用 EF Fluent 来描述如何对表进行过滤?

Update:

如果我有一个数据库集

public class UnitOfWork : DbContext
    {
private IDbSet<MyObj> _MyObj;
public IDbSet<MyObj> MyObjs
        {
            get { return _MyObj ?? (_MyObj = base.Set<MyObj>()); }
        }
}

有什么方法可以告诉 DbContext 过滤 DbSet 吗?


不,没有办法定义延迟加载的过滤器(也不能使用急切加载)Include)。如果您希望您的导航集合仅填充以下项目IsEnabled is true您只能相应地调整查询,例如通过显式加载:

context.Entry(parent).Collection(p => p.Items).Query()
    .Where(i => i.IsEnabled)
    .Load();

这将填充Items收集parent仅适用于已启用的项目。

Edit

我感觉有点像一个失败的战斗的坏消息的使者,他的头被打掉了。也许很难相信实体框架有时没有您想要的功能。为了提高说服你的机会,我添加了一个引用权威人士朱莉·勒曼 (Julie Lerman) 的话:

实体中既不急切加载也不延迟/延迟加载 框架允许您过滤或排序相关数据 回。

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

实体框架代码优先软删除延迟加载 的相关文章

  • 如何使用实体框架选择单个列?

    有没有办法使用 Entity Framework 4 获取单个列的全部内容 与此 SQL 查询相同 SELECT Name FROM MyTable WHERE UserId 1 您可以使用 LINQ Select http msdn mi
  • 使用 SOA、UoW、Repository、DataContext 和多个数据库设计多租户应用程序

    首先 我对这篇文章的篇幅表示歉意 但我想提供尽可能多的细节 以增加得到答案的机会 提前致谢 我正在向集成来自多个数据库的数据的现有应用程序添加新功能 简而言之 它允许客户和 或其会计师访问和更新有关其位置的财务信息 该应用程序有 3 层 其
  • EF4 Code First:如何在不添加导航属性的情况下添加关系

    我应该如何使用 Code First 但不使用任何导航属性来定义关系 之前 我通过在关系的两端使用导航属性来定义一对多和多对多 并在数据库中创建适当的关系 这是类的精简版本 为了简单起见 我已将多对多关系转换为一对多关系 public cl
  • 使用实体框架、代码优先方法解决结构问题

    我目前正在使用 EF 和代码优先方法从现有系统构建数据库 最好对 核心 类进行最小的更改 因此 我想找到 Structs 和 EF 的解决方法 是否可以以任何方式将 Struct 包装到类中 以便 EF 可以使用此 Struct 中的数据
  • TypeConverter 阻止 EntityFramework 中的 ApplyPropertyChanges

    我遇到了一个有趣的问题 希望不仅对我来说有趣 我正在运行 Entity Framework 1 NET 3 5 和 ASP NET MVC 2 我有一个 Customer 类 它与 Country 类具有多对一的关系 换句话说 Countr
  • 静态构造函数中的 Database.SetInitializer() ?

    许多人可能知道为什么我们需要使用下面所示的代码 但是 我想将此逻辑分成几层 并且不想在 Web 层中引用实体框架 DLL 因此我最终将此代码放入我的静态构造函数中DbContext class 这是一个坏主意吗 这样做会对应用程序的性能造成
  • 为什么没有主键的表是一个坏主意?

    我对数据建模非常陌生 根据微软的实体框架 不允许使用没有主键的表 这显然是一个坏主意 我试图找出为什么这是一个坏主意 以及如何修复我的模型 这样我就不会出现这个漏洞 我当前的模型中有 4 个表 User City HelloCity 和 R
  • 无法将类型 System.Linq.IQueryable 隐式转换为字符串

    我有两个名为 Rank 和 CrewMembers 的表 我想根据 CrewMember 的 id 获取 Rank 表中存在的排名名称 我已将船员 ID 作为参数传递 并在此基础上该方法将返回该特定船员的等级 这就是我的代码 public
  • LINQ to Entities 如何更新记录

    好的 我对 EF 和 LINQ 都是新手 我已经弄清楚如何插入和删除 但由于某种原因更新似乎逃脱了我的掌握 这是我的代码示例 EntityDB dataBase new EntityDB Customer c new Customer Na
  • 如何使用 linq to sql 一次更新多行?

    Table id userid friendid name status 1 1 2 venkat false 2 1 3 sai true 3 1 4 arun false 4 1 5 arjun false 如果用户发送userid 1
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • 如何在 C# 中从这个分层父子结构中查找任何项目

    如何从列表中查找任何项目 因为它是动态的 它可能位于列表的任何位置的父项或子项中 并且当子项计数为0时需要停止查找 下面是列表的模型和分层父子结构示例 例子 父级 gt 子级 gt 子级 gt 子级或父级 gt 子级 gt 子级 gt 子级
  • 实体框架在多对多更新场景中附加问题

    我有一个场景 我希望更新电影实体及其与流派的多对多关系 导航属性Genres电影中包含存根Genre只包含的对象GenreID因为我想节省查询所有流派的数据库 请参阅下面的代码 其相当不言自明 问题是我需要将 存根 流派附加到上下文 以便
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 从 SQLCE 4 迁移到 SQL Server 2008

    因此 作为早期采用者 我开发了一个基于 SQLCE4 ASP Net MVC3 和实体框架CTP5 http www microsoft com downloads en details aspx FamilyID 35adb688 f8a
  • Visual Studio 2015 EDMX 模型浏览器和图表丢失

    我最近更新到 Visual Studio 2015 打开我的解决方案并运行 直到我决定将一个实体添加到我的 edmx 中 因此 我双击 edmx 文件来打开图表 或者至少是模型浏览器 但它只打开一个 XML 页面 我检查了安装程序中任何丢失
  • 如何将 Emgu.Cv.Image 转换为 System.Image

    我是 Emgu Cv 的新手 我想知道是否有人可以让我知道如何将 Emgu Cv Image 更改为 System Image 如果需要进一步解释 请告诉我 我会这样做 我的语言我使用的是C 你可以只使用ToImage 方法得到一个Syst

随机推荐