首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EntityFramework Core 学习扫盲

虽然我们目前还没有添加任何约束,但是EF Core会自动地根据Id/XXId命名方式生成自增主键,而且如果没有实体增加[Table]Attribute的话,表命名也是根据属性命名而定。...Fluent Api中,有两种方法可以指定备用键,一种是当开发者将实体属性作为另一个实体外键目标,另一种是手动指定。EF CORE默认约束是前者。...计算 计算指的是数据由数据库计算生成EF CORE层面,我们只需要定义计算规则即可。目前EF CORE 1.1 版本中,暂不支持使用Data Annotations方式定义。...进一步说,如果属性是整数或是Guid类型,那么该属性将会被EF CORE设置为自动生成。这是EF CORE语法糖之一。 那由用户手动设置呢?...EF COREData Annotations和Fluent Api形式为开发者分别提供了三种方法。

9.5K90

01-EF Core笔记之创建模型

如果你想改变默认值,很简单,EF Core提供了Fluent API或Data Annotations两种方式允许我们定制数据模型。...数据标注方式比较简单,类或字段添加特性标注即可,对实体类型有一定入侵。...使用乐观并发控制可提高数据库性能。 按照约定,EF Core不会设置任何并发控制令牌字段,但是我们可以通过Fluent API或数据标注进行配置。...继承 关于继承关系如何在数据库中呈现,目前有三种常见模式: TPH(table-per-hierarchy):一张表存放基类和子类所有,使用discriminator区分类型,目前EF Core...):基类和子类不在同一个表中,子类中包含基类所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储同一个表中。

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

EF Core 导航属性配置

所以我们必须手动导航属性一侧实体类里配置外键,并用 HasForeignKey指定。(如果不使用Fluent API,也是需要在一端实体类配置外键,另一端则不需要)。...EF Core中取消了映射关系中配置中间表功能,所以EF Core中需要一个中间表: public class ManyToManyModelA { public int Id { get...EF 6中 中间表可以仅存在于关系中,但是EF Core3 还没有这个支持。也就是当前文章使用版本。 5. 附加 EF外键约束中,导航属性是默认可。...如果要求,也就是导航属性另一端必须存在则需要在配置关系时候添加: IsRequired() 这个方法也用来声明字段是必须。这个验证是EF 调用 SaveChanges 时候校验。...未完待续 照例未完待续,下一篇将为大家介绍一下EF Core 开发中用法。

3K20

.NET Core类库中使用EF Core迁移数据库到SQL Server

注意目标框架选择是.NET Core 2.0而不是.NET Standard 2.0。 0、前期准备 a)、表实体定义,这个是.NET Standard 2.0类库中存放。...,生成数据库和表 dotnet ef database update 通过VSSQL Server资源管理器查看生成数据库结构,其中__EFMigrationsHistory为每次迁移记录表 b...)、因为string类型字段迁移到数据库之后数据类型为nvarchar(max)并且是可类型,下面我们就使用Fluent API对ApplicationUser表字段进行配置,同样你也可以使用属性注解方式进行配置...Core来说还没有达到可以调整数据库生成字段顺序,不过我们还是可以修改迁移文件实体属性顺序来达到我们想要效果。...:) 4、最后 EF Core强大远不止这些,还有更多使用方法等着我们去发现,去探索。每天进步一点点,是件很愉快事情!

1.7K60

EF Core关系配置

foreach(Book b in books.Skip(3).Take(6)) { } 局限性: SQL 查询必须返回实体类型对应数据库表所有; 结果集中列名必须与属性映射到列名称匹配。...快照更改跟踪:首次跟踪一个实体时候,EF Core 会创建这个实体快照。...) 更新到数据库; “已删除”实体,SaveChanges() 从数据库删除; 查看实体状态: 使用DbContextEntry()方法来获得实体EF Core跟踪信息对象EntityEntry...DbContext会根据跟踪实体状态,SaveChanges()时候,根据实体状态不同,生成Update、Delete、Insert等SQL语句,来把内存中实体变化更新到数据库中。...全局查询筛选器 全局查询筛选器:EF Core 会自动将这个查询筛选器应用于涉及这个实体类型所有 LINQ 查询。

7610

Entity Framework Fluent API

从功能上而言Data Annotations是Fluent API一个子集, Data Annotations可以实现功能Fluent API都能实现。...Fluent API特性列举  当然,System.ComponentModel.DataAnnotations命名空间DataAnnotationEntityFramework程序集中也有相应API...以下APIDataAnnotation特性是EntityFramework中定义,如果也使用DataAnnotation方式来设置映射,就会给实体类增加额外第三方程序集依赖。...所以以下API映射推荐使用FluentAPI方式来设置映射 6.ToTable - TableAttribute:配置此实体类型映射到表名 modelBuilder.Entity()...可通过指定配置操作来自定义和表。如果指定了配置操作,则约定将生成列名。如果在对象模型中公开了外键属性,则使用 HasForeignKey 方法。并非所有关系都支持在对象模型中公开外键属性。

83910

从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

EF Core 不是 EF6升级版,这个大家应该知道,EF Core是轻量级、具有很好扩展性,并且是跨平台EF版本。...EF Core 目前有很多Providers,所以支持很多种数据库,包括:MSSQL,SQLite,SQL Compact,Postgres,MySql,DB2等等。...EF Core支持两种模式: Code First:简单理解为 先写C#(Model),然后生成数据库。 Database First:现在数据库中建立表,然后生成C#Model。...我只早期使用Data Annotation,后来一直使用Fluent Api,所以我这里只介绍Fluent Api吧。...fluent api有很多方法,具体请查看文档:https://docs.microsoft.com/en-us/ef/core/modeling/ 然后,我们就会发现一个严重问题。

2.2K70

.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和配置 并发token 索引 Entity Framework Core:https:/...异步操作对于丰富客户端应用程序中保持响应式 UI 非常重要,并且还可以增加 web 应用程序中吞吐量,在这些应用程序中,它们可释放线程处理 web 应用程序中其他请求 var blog = new...将上下文实例添加到池中之前,EF Core 仅重置它知道状态。 除高度优化方案外,池性能提升通常可以忽略不计。...包含和排除属性 列名 键 自动生成 包含和排除属性 实体属性:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-properties...>() .HasKey(c => c.LicensePlate); } 自动生成 生成值:https://docs.microsoft.com/zh-cn/ef/core/modeling

94120

.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和配置 并发token 索引 Entity Framework Core:https:/...异步操作对于丰富客户端应用程序中保持响应式 UI 非常重要,并且还可以增加 web 应用程序中吞吐量,在这些应用程序中,它们可释放线程处理 web 应用程序中其他请求 var blog = new...将上下文实例添加到池中之前,EF Core 仅重置它知道状态。 除高度优化方案外,池性能提升通常可以忽略不计。...包含和排除属性 列名 键 自动生成 包含和排除属性 实体属性:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-properties...>() .HasKey(c => c.LicensePlate); } 自动生成 生成值:https://docs.microsoft.com/zh-cn/ef/core/modeling

73511

C# 数据操作系列 - 6 EF Core 配置映射关系

前言 《C# 数据操作系列 - 5. EF Core 入门》篇中,我们简单通过两个类演示了一下EF增删改查等功能。细心小伙伴可能看了生成DDL SQL 语句,在里面发现了些端倪。...对于主键,默认情况下EF会检索实体类有没有名为Id或者类名+Id属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键。EF检索到主键类型是数字类型的话,会自动添加自增长约束。...同时如果在一方这边设置了集合类型导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF生成一个中间表。 2....[Column] 表示,用来设置一些基本参数,比如类型、名称 [Required] 表示该插入数据库时不能为 使用注解进行相关配置相当简单,但是这样不可避免需要修改模型类而且需要引入额外命名空间...2.2 Fluent 方式 当我们使用这种方式时候,会面临一个问题:是新建一个配置类呢,还是 EF上下文OnModelCreating方法里统一配置呢?

2.6K21

Entity Framework 4.1 Code-First 学习笔记

Fluent API 来修改模型 为我们模型增加标签 通过构建器来覆盖默认约定,我们需要重写 DbContext 一个方法 OnModelCreating: protectedoverridevoid...当 EF 访问实体实体时候是如何工作呢?你集合是 POCO 集合,所以,访问时候没有事件发生,EF 通过从你定义实体派生一个动态对象,然后覆盖你实体集合访问属性来实现。...同样道理,当你获取一个实体时候,即使所有的属性都是 null ,EF4.1 也将会创建一个复杂类型对象。...由 SQL Server 每次记录被更新时候维护这个。为了告诉 EF 实体中有一个属性表示并发标识,你可以通过标签 [ConcurrencyCheck] 来标识这个属性,或者使用模型构建器。...DbSet.SqlQuery:这个方法返回实体将会被 EF 跟踪修改,所以,如果你在这些返回实体做了修改,当 DbContext.SaveChanges 被调用时候,将会被处理。

1.6K10

EF Core 入门

0.前言 一章简单介绍了一下ORM框架,并手写了一个类似ORM工具类。这一章将介绍一个C#世界里大名鼎鼎ORM框架——Entity FrameworkCore版。...可以延迟加载需要数据,外键引用属性、查询结果等 丰富映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 Core可以通过数据库表生成实体类,两种都可以通过实体生成表...因为EF更多是基于.NET Framework开发,所以微软EF为基础针对.net core做了一定修改,然后EF Core诞生了。可以说EF Core是专门为.net core开发。...这是EF Core保留迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,会自动创建该文件,同时设置好表;如果有,但不是SQLite文件,则会报错。...使用工具连接到blogging.db数据库,可以看到 EF自动生成两个实体类对应表DDL: CREATE TABLE "ModelBs" ( "Id" INTEGER NOT NULL CONSTRAINT

2.4K10

解决因C#8.0语言特性导致EFCore实体类型映射错误

问题 使用ef执行Insert对象到某表时报错,此对象Address为: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';不允许有 Null 值。INSERT 失败。...检查数据库和迁移文件时发现Address这个字段被意外设置成nullable: false,而其它字段却正常,按理来说对于string类型属性,EFCorecodefirst模式下应该映射为可类型...代码也确认了实体中不包含[Required]注释,在任何地方也没有出现.IsRequired()调用。...于是开始排查:手动创建一个程序集,引用EFCore,从原项目拷贝EF设计时库、DbContext和各实体类,一顿操作后竟然发现在新程序集中生成迁移文件是符合预期。...通过查看EF文档了解到,可为引用类型通过以下方式影响 EF Core 行为: 如果禁用可为引用类型,则按约定将具有 .NET 引用类型所有属性配置为可选 (例如 string ) 。

19420

Entity Framework 约定

EF检测出外键属性后,会根据外键属性是否为来判断关系,如果外键可以为,那么模型之间关系将会配置成可选,Code First 不会再关系上配置级联删除。...First 不能推断出模型中主键,并且没有通过Data Annotations 或者Fluent API进行手动配置主键时,该模型将会自动被配置为复杂类型,检测复杂类型时要求该类型没有引用实体类型属性...简单说就是:一个复杂类型作为已存在对象属性,EF会将复杂类型类映射到已存在表中,已存在表包将包含这些,而不是将复杂类型映射成另外单独一张表。...自定义约定可以看作全局约定规则,将会运用到所有实体和属性,也可以显示实现应用到指定模型。...自定义约定相对来说比Fluent API 要简单,只需一行代码即可解决。

1.3K10
领券