![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Entity Framework
文章平均质量分 70
喵叔哟
一个关注AI和Java的.NET程序员
展开
-
Entity Framework Core 简介
今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简称 EF Core),是 EF6 之后微软推出的开源的轻量级可扩展跨平台 ORM 框架。 EF Core 需要和 .NET Core 应用程序一起使用,并且需要 .NET 4.5+ 版本。下面列举一下 EF Core 所支持的项目类型:运行在 .NET Cor...原创 2019-08-27 15:19:17 · 5665 阅读 · 0 评论 -
EF Core 数据验证
数据验证是每个项目必须存在的,可以防止不符合系统规范的数据进入系统进而导致系统不稳定甚至崩溃。我们可以自己编写代码(包括前台和后台代码)进行验证,但是这样一方面代码量较大,另一方面有可能验证代码覆盖不完全。但是在 Entity Framework Core (以下简称 EF Core )中这些问题全可以解决。在 EF Core 中有两种验证模式,分别是内置模型验证和第三方扩展模型验证。下面我分别对...原创 2019-11-21 23:58:50 · 2269 阅读 · 0 评论 -
Entity Framework Core 实现全局查询过滤
微软在 Entity Framework Core 2+ 中引入了全局查询过滤器,简化了构建多租户应用程序和实体软删除的复杂度。这篇文章我将通过代码的形式对全局过滤查询进行详细的讲解。在讲解前我们先来简单说一下什么是多租户,所谓多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离...原创 2019-11-12 23:28:05 · 1332 阅读 · 0 评论 -
Entity Framework 一对多关系映射
EF中关系映射也是一个很关键的内容,关系映射和属性映射一样,也是在 OnModelCreating 中配置映射。EF中的关系映射有如下三种:One-to-Many Relationship(一对多)Many-to-Many Relationship(多对多)One-to-One Relationship(一对一)我们今天先讲解 One-to-Many Relationship(一对一关...原创 2019-06-30 20:04:24 · 2290 阅读 · 0 评论 -
Entity Framework 私有属性映射
这篇文章纯属自娱自乐,因为在实际开发中用到私有化属性映射的可能性几乎为0。在EF中默认映射的是具有 public 修饰符的属性,但是如果是 internal 、 private 和 protected 修饰的属性要映射进数据库怎么做呢?下面我们分别来讲解一下。零、 internal 属性映射我们先创建代码实体类代码{ public int Id { get; set; } p...原创 2019-07-19 16:14:46 · 1021 阅读 · 0 评论 -
Entity Framework 一对一关系映射
一对一关系是Entity Framework 中很复杂的关系,涉及了 HasOptional 、WithRequired 、 WithOptionalPrincipal 、 WithOptionalDependent。这篇文章我们将具体讲解这几个的用法。我们以会员和订单为例,一个会员有可能有订单,也可能没有订单,但是一个订单绝对属于一个会员。我们先编写出会员和订单的类代码:public cla...原创 2019-07-20 18:38:06 · 1403 阅读 · 0 评论 -
Entity Framework 继承映射
继承是面向对象开发时经常用到的,但是SQL Server 数据库不具备继承,那么怎么办能?我们可以利用如下三种方法:TPH(Table per Hierachy):对SQL架构进行非规范化来表示多态,使用鉴别列对类型区分;TPT(Table per Type):用外键表示继承关系TPC(Table per Concete class):完全丢弃多态和继承零、TPHTPH是将整个类层次...原创 2019-07-21 11:11:08 · 957 阅读 · 0 评论 -
Entity Framework 迁移
这一篇文章主要讲解EF的迁移,我们前面的文章一直是使用新增数据的方式生成数据库,但是在实际开发过程中,我们会使用代码迁移的方式生成数据库,下面我们来讲解一下代码迁移。零、代码迁移命令我们在进行代码迁移的时候经常会用到如下命令:Enable-Migrations:在项目中启动代码迁移;-ContextTypeName :指定要使用的上下文,默认情况下该参数可以省略,这时EF将查找项目中...原创 2019-07-22 23:17:55 · 918 阅读 · 0 评论 -
Entity Framework 实体状态
从今天开始我们开始讲解EF中的实体状态和数据操作,这篇文章先讲解实体状态。我们通过前面的学习,知道EF通过上下位负责跟踪实体的状态,实体状态的位置是在命名空间 System.Dat.Entity 里的 EntityState,具体状态有如下5种:DetachedUnchangedAddedDeletedModified下面我们分辨来讲解一下零、Detached有时候我们只需...原创 2019-07-28 20:19:28 · 1039 阅读 · 0 评论 -
Entity Framework 并发冲突解决方案
在大多数的应用中都会出现客户端同时发送多个请求对同一条数据就行修改,这个时候就会出现并发冲突。我们一般的做法会有如下两种:乐观并发所谓的乐观并发就是多个请求同时对同一条数据的更新,只有最后一个更新请求会被保存,其他更新请求将会被抛弃。悲观并发所谓悲观并发就是多个请求同时对同一条数据的更新,只有当前更新请求完成或者被抛弃,才会执行下一个更新请求,如果当前更新请求未完成或者未被抛弃,那...原创 2019-08-30 11:06:37 · 1871 阅读 · 0 评论 -
Entity Framework 小知识(五)
在 多对多关系映射 中关联表是EF自动生成的。但有时候我们需要显示定义关联表。我们可以按照如下步骤定义(继续使用多对多关系映射这篇文章饿代码):定义关联表类:public class StudentCourses : BaseEntity{ public int StudentId { get; set; } public virtual Student Student ...原创 2019-07-15 01:38:42 · 913 阅读 · 0 评论 -
Entity Framework 多对多映射
上一篇文章我们讲解了EF中的一对对多的关系映射,这篇文章我们讲解EF中的多对多(Many-to-Many Relationship)关系映射。这篇文章我们同样通过一个简单的例子来讲解多对多的关系映射。零、自动生成关系表故事:在一个学生选课系统中,存在学生和课程两个实体,他们之间的关系是:一个学生可以选择多门课程,一门课程也可以被多个学生选择。通过上面简单的描述,我们可以分析出学生和课程是多对...原创 2019-07-14 23:12:26 · 1819 阅读 · 1 评论 -
Entity Framework 小知识(二)
零、基于代码配置基于代码配置是EF6新增的一个特性,操作步骤如下:创建***DbConfig***派生类;配置默认连接工厂;设置***Database Provider***;设置数据库初始化器;1. 创建***DbConfig***派生类public class EF6Config:DbConfiguration{ public EF6Config(){}}接...原创 2019-05-20 23:56:21 · 917 阅读 · 0 评论 -
Entity Framework简介
零、什么是Entity FrameworkEntity Framework (简称EF),是.NET的 Object/Relational Mapping 实体框架(简称ORM),可以在 SQL Server、MySQL、Oracle、等数据库上使用。可以将数据作为业务对象和实体进行操作,使用LINQ进行查询,使用C#进行操作和检索。一、领域建模方式Entity Framework 有三种领...原创 2019-05-11 17:42:18 · 1214 阅读 · 0 评论 -
Entity Framework 小知识(一)
零、EF初始化数据库策略上一节我们演示的是在数据库不存在的情况下操作数据库的方法,但是某些情况下数据库是已经存在的(例如:对已有系统的升级改造扩展、DBA已经将数据库提前创建等等)。那么这种情况下我们该怎么办呢?这时我们就用到了EF数据库初始化的三种策略。这三种策略如下:如果数据库不存在,则创建,存在,则不创建Database.SetInitializer(new CreateDatab...原创 2019-05-17 11:04:37 · 898 阅读 · 0 评论 -
Entity Framework 简单属性映射
本节我们只介绍在EF中比较常见的映射零、表名映射默认情况下可以不配置表名,我们的模型名称将会作为数据库的表名。但是大部分项目会要求数据库表名称的规范,例如我们要将模型 User 在数据库中映射为 Users,那么我们可以这么做,在派生类上下文中的 OnModelCreating 中进行如下定义:modelBuilder.Entity<User>().ToTbale("Users"...原创 2019-05-27 11:33:35 · 1186 阅读 · 0 评论 -
Entity Framework 约定
约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。约定的形式有如下几种:类型发现约定主键约定关系约定复杂类型约定自定义约定零、类型发现约定在Code First 中。我们定义完模型,还需要让EF上下文你知道应该映射那些模型,此时我们需要通...原创 2019-05-18 16:21:24 · 919 阅读 · 0 评论 -
Entity Framework 小知识(三)
零、乐观并发在单服务器上运行的站点,为了防止出现脏读现象,我们一般使用Lock语句关键字,但是如果在分布式站点上使用Lock语句关键字是不起作用的,因为程序锁住了服务器1数据库实例,但服务器2并不知道服务器1已被锁住,这样依然会出现脏读现象。这时我们就用到了EF的乐观并发。EF中解决并发有两种方式:利用并发Token;利用行版本的方式代码如下:public class EfDbCo...原创 2019-06-13 23:45:14 · 971 阅读 · 0 评论 -
Entity Framework 索引
Entity Framwework 6 设置和使用索引,是一个比较 egg 疼的事情,为什么这么说呢?因为Entity Framwework 6的不同版本有不同的设置和使用方法,按照版本来划分,有三种方法:EF6 方法EF6.1.x方法EF6.2.x方法EF6EF6中设置索引比较麻烦,我们需要先进行code first 迁移,然后在迁移类中的 Up 方法中输入如下代码://创建索引...原创 2019-06-17 10:11:54 · 1764 阅读 · 0 评论 -
Entity Framework复杂类型属性映射
零、创建项目必须代码public class BaseModel{ public int Id { get; set; } public DateTime CreateDateTime { get; set; }}public class Address{ public string Street { get; set; } public string ...原创 2019-06-11 23:36:06 · 2155 阅读 · 0 评论 -
Entity Framework 小知识(四)
在EF中并没有提供包含索引和过滤索引的创建方法,那么我们就么发创建了吗?答案是否定的,我们可以通过迁移类进行创建包含索引和过滤索引。首先我们通过 Add-Migration 命令创建一个空的迁移类,然后在 Up方法中输入如下代码:Sql($"CREATE NONCLUSTERED INDEX [{IndexName}] ON [dbo].[User]([Name] INCLUDE ([IdNu...原创 2019-06-18 09:59:50 · 904 阅读 · 0 评论 -
Entity Framework初体验
零、初体验新建控制台程序,名称为:MyFirstEF在NuGet中搜索 Entity Framework,如下图:创建 Blog 类:public class Blog{ public int Id { get; set; } public string Name { get; set; } public string Url { get; set; } pub...原创 2019-05-13 18:26:12 · 914 阅读 · 0 评论