首页
学习
活动
专区
圈层
工具
发布

【愚公系列】2023年09月 .NETC#知识点-EF配置软删除

前言 软删除是指在数据库中,对数据进行标记而不是实际删除数据记录。标记数据记录通常是通过添加一个额外的字段(如“deleted_at”)来实现的,表示该数据记录已被标记为删除。...3.将拦截器注册到EF的配置文件中,例如: DbInterception.Add(new MyInterceptor()); 此时,EF就会自动调用拦截器中的相应方法,对数据库操作进行干预和修改。...需要注意的是,拦截器可能会对性能产生一定影响,因此需要谨慎使用,并在实际测试中评估其影响。另外,拦截器中的操作也可能产生意外的副作用,因此需要仔细考虑和测试。...EF的Interceptor是一组API,可用于在操作数据库时拦截命令和结果。...为了使用上述Interceptor,需要在DbContext的Options中加入对应的Interceptor: var optionsBuilder = new DbContextOptionsBuilder

22200
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Entity Framework Core 2.0 新特性

    模型级过滤器将使用正确的上下文实例中的值,即执行查询的那个。   使用  IgnoreQueryFilters() 方法在一次查询中禁用过滤器。...在 ef core 2.0 中,我们将自定义的DbContext类型注册到DbContextPool服务中,可让该数据库上下文类型的实例重复使用。...在以前的ef版本中,调用查询api时,可以通过自动编译并缓存编译的结果达到一次计算多次调用,有效的提高了ef的性能,显示编译查询(Explicitly compiled queries)这种机制可以绕过缓存查找的性能消耗...一旦注册了方法,您就可以在查询的任何地方使用它。  要注意的几件事: 按照惯例,在生成SQL时,该方法的名称用作函数的名称(在本例中是用户定义的函数),但可以在方法注册期间重写名称和schema。...声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

    2.5K50

    5个鲜为人知的C#.NET开发秘籍:从时间处理到安全配置的实战技巧

    但它存在一些可能引发重大问题的缺陷: • 受服务器时区影响,当不同时区客户端共用数据库时会导致时间数据不可靠 • 难以在单元测试中模拟,导致测试结果不稳定 解决方案是使用DateTimeOffset.UtcNow...Core全局查询过滤器 (适用版本:Entity Framework Core) 当需要频繁对某实体应用相同查询条件时(比如99%的场景只需要查询可用商品),EF Core的全局查询过滤器能消除重复代码....Where(x => x.Available) .ToList(); } 在DbContext的OnModelCreating方法中配置全局过滤器: protected...如需临时禁用,使用IgnoreQueryFilters(): var allProducts = context.Products .IgnoreQueryFilters() .ToList...(); 技巧3:并发集合的使用 (适用版本:.NET Framework 4+) 标准集合类型(如List)非线程安全,多线程操作时需要手动加锁。

    20410

    【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截

    二:DbContext的构造函数里面做了那些事情。     三:如何在EfCore的服务中获取到Web注入的服务的方式之一。     四:拦截查询的几种方式。     ...五:使用缓存查询方法提升性能。     六:如何托管EFCORE的IOC容器(和Web的IOC使用同一个)     以上作为本篇文章的所有内容,接下来,我们来开始讲解源码,动手实践。...ef的ioc到web的时候可以使用这种方式来实现,后面也会写一个这样的例子。...如果是使用了EF的IOC托管到了Web的IOC,只需要正常注入服务就行,生命周期是Scope, #未接管 optionsBuilder.ReplaceService的构造函数又做了那些事情,在写了不托管EF的ioc到WEB的ioc的场景下如果注入服务到EF的ioc中,以及如何拦截增删改查的方式,提升查询性能的方式,以及最后的EF的ioc托管到WEB的ioc,本文作为源码讲解的第一章

    1.5K20

    03-EF Core笔记之查询数据

    预先加载 使用Include方法指定要包含在查询结果中的关联数据。...好的一点是,EF Core在设计时就替我们考虑了如何防御SQL注入攻击,因此当我们使用FromSql方法时,参数中如果有使用到拼接字符串的情况,则会自动为我们生成SQL查询参数,例如: var user...SQL查询时,EF Core仍然支持我们使用linq编写查询语句。...在执行查询时,EF Core会检查我们的sql语句是否支持拼接,如果支持的情况下,则会将linq过滤语句拼接为sql一并发送到数据库进行查询。 跟踪 原始SQL中的跟踪与Linq查询的跟踪方式一致。...p.IsDeleted); } 我们可以在特定的查询中禁用全局筛选器: blogs = db.Blogs .Include(b => b.Posts) .IgnoreQueryFilters

    3.2K20

    EF Core关系配置

    属性赋值(当前赋值也不会出错),也不需要显式地把新创建的Comment类型的对象添加到DbContext中。...执行SaveChanges()等方法时,EF Core将会把存储的快照中的值与实体的当前值进行比较。...已删除(Deleted):DbContext正在跟踪此实体,并存在于数据库中,但在下次调用 SaveChanges 时要从数据库中删除对应数据。...) 更新到数据库; “已删除”的实体,SaveChanges() 从数据库删除; 查看实体的状态: 使用DbContext的Entry()方法来获得实体在EF Core中的跟踪信息对象EntityEntry...EF Core优化之AsNoTracking 如果通过DbContext查询出来的对象只是用来展示,不会发生状态改变,则可以使用AsNoTracking()来 “禁用跟踪”。

    1.3K10

    登录注册的小项目对比.Net Core与 .Net Framework的一些区别

    :一些通用的组件封装到该类库中 UserSys.Web:Asp.Net MVC 2、Web层采用Asp.Net MVC 3、数据库访问通过EF ​三、具体实现​...EF 中的modelBuilder.Configurations.AddFromAssembly()方法 ,但是不用担心,杨老师已经给我们封装了一个和EF中相同作用的...需要说下的是:依赖注入的问题: 1、.Net FrameWork中我们通过IOC对类进行注入,怎么注入自行百度,方法很多,我主要说下.Net Core中怎么注入...2、.Net Core中有内置的IOC有三种生命周期,我们采用Singleton 的方式注入,ingleton 生命能够周期服务在第一被请求时创建,在后续的每个请求都会使用同一个实例。...具体实现: 在Controller中使用构造函数注入(不是属性注入) 1)、首先需要在UserSys.IService层中,写一个通用的接口,该接口中不需要定义任何的方法

    41500

    【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

    在选择使用 EF Core 时,开发者需要根据项目需求选择合适的数据库提供程序,并确保安装了相应的 NuGet 包。...在 Entity Framework Core(EF Core)中,ORM 的概念依然适用,EF Core 提供了 ORM 功能,允许开发者使用 .NET 类型(如类和对象)来表示数据库中的表格和数据,...EF Core 通过提供事务上下文支持数据库事务。 事务在 EF Core 中的使用涉及以下步骤: 开始事务:在 DbContext 实例中开启一个事务。...以下是一个简单的示例,演示了如何在 EF Core 中进行跨数据库操作: 安装相应数据库提供程序的 NuGet 包。...文章首先介绍了EF Core的的基本概念,然后讲解了EF Core连接数据库,如何在多数据库环境下使用EF Core,以及需要注意的性能和兼容性问题。

    2.8K00

    【研发日记13】不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理

    数据表设计 其实这一块我个人是参考的 Zizaco/entrust 因为我觉得,大多数情况下,我们要用的角色和权限节点都是真多用户的。...链式方法设计 其中调用 $user->ability()->all() 和 $user->ability()->all() 都是返回的 集合 可以链式调用集合下的所有方法进一步操作。...ability 用户 Trait Ability 实例 Role 模型所需代码 使用 然后我们打开 User 模型wen jia文件添加如下代码: class User ......{    use UserHasAbility; } 总结 其实性状在 User 模型中只暴露了 roles 和 ability 两个公开方法。...整个 ability 都是结合在集合之上的一些封装,这样是的代码调用更加优雅。 以上代码是在开发ThinkSNS+中的实际真实代码。具体的实现可参考项目。

    1.8K40

    C#进阶-Entity Framework 5 原理与使用详解

    本文详细介绍了Entity Framework 5(EF5)在C#中的使用方法,包括EF5的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用EF5。...此版本的EF引入了性能改进和支持多种数据库的功能,同时利用.NET 4.0的特性,如延迟加载、任务并行库(TPL)等。2....数据库上下文管理:EF5提供了DbContext类,用于管理数据库连接和操作。DbContext是EF的核心类,用于与数据库进行交互。...OnModelCreating方法用于配置实体与数据库表之间的映射关系。2. 查询数据EF5使用LINQ进行数据查询,查询结果自动映射到对象模型中。...此外,EF5的学习曲线相对较陡,对于刚入门的开发者,需要花费一定的时间掌握其用法和最佳实践。因此,在选择EF5时,需要根据具体项目需求权衡其优势和劣势。

    1.2K54

    深入剖析.NET中的设计模式争议与最佳实践

    冗余抽象层 = 更高的复杂度 若仓储方法仅转发调用至DbContext,意义何在?...限制EF Core的完整能力 EF Core的Include()、AsNoTracking()和原生SQL等高级功能,可能在强制通过预定义仓储方法时失去灵活性。 支持仓储模式:为何它仍有生命力?...可测试性:更简单的单元测试 直接注入DbContext会因EF Core与内存数据库的兼容性问题导致单元测试困难。...来源:Microsoft文档 使用自定义仓储 vs 直接使用EF DbContext 若项目足够简单,直接使用DbContext更高效;若需解耦或切换数据源,自定义仓储仍具价值。...以下情况可跳过: • 仅使用EF Core且无换库计划 • 仓储仅包装DbContext而无实际价值 • 需完全访问EF Core高级功能 以下情况建议使用: • 未来可能切换数据库 • 需要更好的单元测试支持

    41500

    EF Core中确保DbContext线程安全(二)

    1.使用同步机制(如锁)保护 DbContext如果你确实需要在多个线程中共享同一个 DbContext 实例(虽然不推荐),你可以使用锁(lock)来确保同一时间只有一个线程可以访问 DbContext...IDbContextFactory是专门用于在需要时创建DbContext实例的工厂类,适用于多线程或需要手动管理DbContext生命周期的场景。...实例:DbContext 不是线程安全的,不能在多个线程中并发使用。...每个线程/任务使用独立的 DbContext 实例:推荐的做法,确保线程安全。使用依赖注入管理 DbContext 生命周期:在 ASP.NET Core 等框架中,使用 Scoped 生命周期。...使用 IDbContextFactory:适用于 EF Core 5.0+,可以安全地在多线程环境中创建 DbContext 实例。

    42100

    【译】MongoDB EF Core 提供程序:有什么新功能?

    要使用示例数据设置 Atlas 集群,您可以按照文档中的步骤操作。我们将创建一个简单的 .NET 控制台应用程序来开始使用 MongoDB EF Core 提供程序。...接下来,让我们在刚刚添加的两行代码中添加一个断点,以确保我们可以在继续操作时实时跟踪更改。选择“开始调试”按钮来运行应用程序。当第一个断点被击中时,我们可以看到本地字段值已被分配。...我们将了解如何在同一个应用程序中使用驱动程序创建新索引。首先,我们将列出集合中的索引,以查看哪些索引已经存在。MongoDB 默认在 _id 字段上创建索引。...这将使生产级工作负载中的操作在发生任何故障时自动回滚,并确保所有操作都以乐观并发的方式完成。 如果您想关闭事务,您可以在调用任何 SaveChanges 操作之前的初始化阶段进行关闭。...您可以在文档中阅读更多相关信息。我们将使用 RowVersion 来演示此用例。这将利用模型类中的 Version 字段,该字段将由 MongoDB EF 提供程序自动更新。

    1.3K10
    领券