ef core提供了Global Query Filters特性来实现多租户与软删除,收集了一些实现方法. 最简单的例子时微软官方的特性解释. https://docs.microsoft.com/en-us/ef/core/querying/filters modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted); 比较全面的实现可参考: https://gunnarpeipman.com/ef-core-global-…
很多web程序一般的偶不会设计真的物理删除了. 基本上都是在在数据库加一个标记,就得当作已经删除了.同时在查询的时候,过滤已经标记删除的数据 ef core实现软删除是非常简单的,直接在OnModelCreating动态创建一个IsDeleted字段,bool类型.然后扔到ef core的查询过滤器里面去. protected override void OnModelCreating(ModelBuilder modelBuilder) { foreach (var entityType in…
EntityFramework.DynamicFilters 实现软删除和租户过滤…
这两天一直在研究在code first下如何删除数据表中的指定行,于是开始搜狗,后来百度,压根就找不到资料,后来一想可能我的搜索关键字有问题,而且ef core命令与ef的命令差不多,于是从这两个方面着手,最后终于找到了解决方法,其实特别简单,就是最基本的ef core的命令而已,唉,说白了就是还技术债. 先说下我的需求:一开始需要在数据表里面新增一个字段,于是使用Add-Migration新增了,后来又不需要了,于是删除该字段,但是不能直接在数据表删除该字段啊,这点,我在<ef core使用c…
原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 这篇文章是关于如何使用 EF Core 实现软删除的,即表面上删除了数据,但数据并没有被物理删除,在需要的时候你还是可以把它读取出来的.软删除有很多好处,但也有一些值得注意的问题.这篇文章会教你使用 EF Core 实现一般的软删除和复杂的级联软删除.在此过程中,我还会介绍如…
本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final).正式版发布后,功能可能存在变动. 继续探索Entity Framework Core 2.0,今天我将探讨如何轻松使用软删除(或逻辑删除).我的意思是以透明的方式实现软删除,例如,您是物理上的删除行…
目录 SAAS 和多租户 多租户数据隔离方案 使用 EF Core 简单实现多租户 单数据库实现 多数据库实现 源代码 参考 SAAS 和多租户 SaaS(软件及服务)区别于其他应用程序的主要特征就是能够使客户在使用应用程序时按照使用量付费.他们不需要为软件购买许可,也不需要安装.托管和管理它.这方面的操作全部由提供 SaaS 软件的组织负责. 多租户是实现 SaaS 的关键因素, 它可以让多个企业或组织用户共用相同的系统或程序组件, 同时不会破坏这些组织的数据的安全性, 确保各组织间数据的隔离…
阅读本文大概需要 14 分钟. 原文:https://bit.ly/2C67m1C 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 这是深入理解 EF Core 系列的第二篇文章.第一篇是关于 EF Core 如何从数据库读取数据的:而这一篇是关于 EF Core 如何向数据库写入数据的.这是四种数据库操作 CRUD(新增.读取.更新和删除)中的 CUD 部分. 我假设你对…
Entity Framework Core performance tuning – a worked example Last Updated: February 25, 2019 | Created: September 22, 2017 This is the first in a series of articles on performance tuning EF Core. In this article I take an example book selling site tha…
感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p/8491058.html 什么是值对象 没有唯一的标识,固定不变的,表示一个具体的概念,用来描述一个东西的特征,代表是什么,使用时直接添加或替换,值对象在迁移时,会以字段的形式迁移到数据库中 软删除 定义删除的接口 public interface ISoftDelete { bool IsDel…
很多web程序一般的偶不会设计真的物理删除了. 基本上都是在在数据库加一个标记,就得当作已经删除了.同时在查询的时候,过滤已经标记删除的数据 ef core实现软删除是非常简单的,直接在OnModelCreating动态创建一个IsDeleted字段,bool类型.然后扔到ef core的查询过滤器里面去. protected override void OnModelCreating(ModelBuilder modelBuilder) { foreach (var entityType in…
本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final).正式版发布后,功能可能存在变动. 继续探索Entity Framework Core 2.0,今天我将探讨如何轻松使用软删除(或逻辑删除).我的意思是以透明的方式实现软删除,例如,您是物理上的删除行…
最近遇到了一个 EF Core 的恐怖问题,在添加数据时竟然会自动删除数据库中已存在的数据,经过追查发现是一个多余的实体关系配置引起的. modelBuilder.Entity<Question>() .HasOne(q => q.Owner) .WithOne(); 罪魁祸首就是上面的 WithOne() . 今天写了个非常简单的控制台程序重现了这个问题. 实体类 Question 的定义 public class Question { public int Id { get; set…
假设在数据库中有两个表:Person表和Book表,Person和Book是一对多关系 Person表数据: Book表数据: 可以看到数据库Book表中所有的数据都属于Person表中"F"这个人 Person表,下面的Person类是该表在EF Core中的实体类型: public partial class Person { public Person() { Book = new HashSet<Book>(); } public int Id { get; set…
C# 嵌入dll   在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形式总归让人不爽,那么有办法让生成的软件中直接就包含这个dll文件吗,这样就可以不用dll跟着exe走了,避免单独不能运行的情况. 答案是有的! 在工程项目目录下找到Resources.resx文件并点击,然后按下面操作,添加资源,将你要加入的dll添加进来. 操作完成后,就会在下面的内容框里看到你添…
在django中,实现这个功能很简单,我们采用一个字段用来保存删除的时间.若记录没有被删除,那么设置该值为None,如果被删除,那么设置时间为删除的时间. class BaseSchema(models.Model): createdAt = models.DateTimeField("创建时间",auto_now_add=True) updatedAt = models.DateTimeField("更新时间",auto_now=True) deletedAt =…
本文是为了学习ABP的使用,是翻译ABP官方文档的一篇实战教程,我暂时是优先翻译自己感兴趣或者比较想学习的部分,后续有时间希望能将ABP系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能力稍微差一点的同学(当然我自己也不一定翻译的多好,大家共同学习). 其实这篇文章也花了我一些时间,突然感叹其实写文章挺不容易的,这次虽然是翻译,基本内容都是尊重原文的意思翻译,但是里面的每一句代码我都自己写了也运行测试了,截图都是自己运行的结果. 这个ABP框架真的挺不错的,已经有很多人也已经翻译了…
一个事务中    先在数据库查出一条数据进行修改      然后在进行查询  他会直接在内存中找到这条数据  不会再数据库查询了 EF Core的 linq语句中可以使用C#方法或函数   在EF6或之前版本不可以 .Include()  在EF Core和 EF6中支持lamada表达式  之前的版本该方法只接受列名字符串 使用原生sql 配置一对一关系   在EF6.X或之前不支持 public class Student { public int Id { get; set; } publ…
一.简介 ABP 的软删除是为了,在删除的时候,不是真正的删除数据,是为了保护数据. 二.具体实现 在 Core  层,我们需要这个实体去实现这个 ISoftDelete 接口.实现它的 public virtual bool IsDeleted { get; set; } 方法即可. namespace xxx.xxx.xxxxx { using Abp.Domain.Entities; /// <summary> /// 餐馆招聘 (Mg58Infos_RestaurantRecruitm…
在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互.这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能.EF团队甚至从Entity Framework的第一个版本中恢复了一些有用的旧的功能.本博文带你更深入地研究访问EF Core 5的一些元数据和其有趣的使用方式. 1.将EF的ToTraceString移植为EF Core的ToQueryString 这是回忆杀. 在Entity Framework的第一个迭代版本中,没有内置的日志记录.但…
写在前面 Entity Framework Core (EF Core) 是 .NET 平台流行的对象关系映射(ORM)框架.虽然 .NET 平台中 ORM 框架有很多,比如 Dapper.NHibernate.PetaPoco 等,并且 EF Core 的性能也不是最优的(这是由于 EF 的实体跟踪特性,将其禁用后可以大幅提升性能),但依然吸引到很多后端开发者的使用,原因如下: EF Core 由 .NET 官方进行开发维护,出现问题解决较为及时,这是很多国产 ORM 框架不具有的优势: EF…
1 前言 本文致力于将一种动态数据过滤的方案描述出来(基于 EF Core 官方的数据筛选器),实现自动注册,多个条件过滤,单条件禁用(实际上是参考ABP的源码),并尽量让代码保持 EF Core 的原使用风格. 1.1 本文的脉络 会在一开始,讲述数据过滤的场景以及基本的实现思路. 随后列出 EF Core 官方的数据查询筛选器例子. 最后将笔者的方案按功能(自动注册,多个条件过滤,单条件禁用)逐一实现出来. 1.2 数据过滤的场景 一般我们会有这样的场景,可能需要数据过滤: 软删 多租户 通…
model中需use traits\model\SoftDelete; // 数据表中需添加一个 delete_time 字段保存删除时间 namespace app\index\model; use think\Model; use traits\model\SoftDelete; class User extends Model { use SoftDelete; protected static $deleteTime = 'delete_time'; // 5.2版本之前必须用stati…
千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功能已经可用. NuGet 地址:https://www.nuget.org/packages/MySql.Data https://www.nuget.org/packages/MySql.Data.Core/ 本篇还是简单介绍一下:.NET Core 使用Dapper 操作MySQL 数据库, .NET Core MySQL官方驱动. 新建项…
官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大家多体谅! 下面正式进入主题: Entity Framework Core (EF Core) 下面是EF Core 的计划和技术线路,注意,这些计划是可能发现变化的,因为很多事是很难预测的.即便如此,我们还是尽可能保持计划的公开和透明,以解大家对EF Core期望,以及做出相应的安排. Sched…
这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择  ASP.NET Core Web Application (.NET Core)  这里选择web 应用程序,然后更改身份验证 改为 不进行身份验证 然后再包管理控制台里执行下面两条命令 引用 EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore 再引用 EntityFrameworkCore.Sql…
NET Core驱动已出,支持EF Core 千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功能已经可用. NuGet 地址: https://www.nuget.org/packages/MySql.Data.Core/ 本篇还是简单介绍一下:.NET Core 使用Dapper 操作MySQL 数据库, .NET Core MySQL官方驱动. 新建项目 新建一个.NET Core控制台…
前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2.0 , 你需要至少 Visual Studio 2017 15.3 预览版本. 安装或升级到 EF Core 2.0 你可以通过以下命令来安装或者升级你目前的 .NET Core 版本. // 安装 PM> install-package Microsoft.EntityFrameworkCore…
出于学习和测试的简单需要,使用 Console 来作为 EF CORE 的承载程序是最合适不过的.今天笔者就将平时的几种使用方式总结成文,以供参考,同时也是给本人一个温故知新的机会.因为没有一个完整的脉络,所以也只是想起什么写点什么,不通顺的地方还请多多谅解. 本文对象数据库默认为 VS 自带的 LocalDB 1. Normal & Simple 先介绍一种最简单的构建方式,人人都会. 新建 Console 应用程序,命名自定 安装相关Nuget 包 //Sql Server Database…
一.前言 .net core 2.0正式版已经发布几个月了,经过研究,决定把项目转移过来,新手的话可以先看一些官方介绍 传送门:https://docs.microsoft.com/zh-cn/dotnet/core/ 由于在领域设计模型上遇到了一些坑,故给大家分享出来自己的一些解决方案. ok,直接上干货,大概结构如下: 比较教科书式的架构. 二.领域层 领域实体 值对象 规约接口 工作单元接口 仓储接口 聚合跟划分,我们先建立一个简单的用户实体 三.仓储层 引用Microsoft.Entit…