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

01-EF Core笔记之创建模型

使用EF Core第一步是创建数据模型,模型建好,下班走早。EF Core本身已经设置了一系列约定来帮我们快速创建模型,例如表主键字段等,毕竟约定大于配置嘛。...,而在EF Core中模型中为该实体类型定义属性,这些类型只能通过变更跟踪器进行维护。...实体之间关系,可以参照数据库设计关系来理解。...EF实体框架,它实体会映射到关系型数据库中。所以通过关系型数据库之间关系更容易理解实体关系。...在数据库中,数据表之间关系可以分为一对一、一对多、多对多三种,实体之间同样有这三种关系,但是EF Core仅支持一对一、一对多关系,如果要实现多对多关系,则需要通过关系实体进行关联。

3K20

EntityFramework Core 学习扫盲

主键 默认情况下,EF CORE会将实体中命名为Id或者[TypeName]Id属性映射为数据库表中主键。当然有些开发者不喜欢将主键命名为Id,EF CORE也提供了两种方式进行主键相关设置。...索引 EF CORE索引概念和关系型数据库中索引概念没有什么不同,比如在Sql Server,将Blog映射到数据库,将为BlogId建立主键默认持有的聚集索引,将Post映射到数据库中,将为...EF CORE中,主体(Principal Entity)指的是包含主键/备用键实体。所以在一般情况下,所有的实体都是主体。而主体键(Principal Key)指的是主体中主键/备用键。...虽然主体键也包括主键,但是主键EF CORE强制定义,所以HasPrincipalKey只会将属性配置为备用键。 2....常见关系1-1,1-n,n-n,除此以外,关系两边还有可空不可空控制。那么EF CORE中,我们怎么实现这些关系呢?

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

Entity Framework Core 2.0 新特性

(本文英文原文地址:这里) 1.实体方面的新内容     1.1表拆分      现在可以将多个实体类型映射到将要共享主键同一个表,并且每一行将对应于两个或多个实体。    ...使用表拆分识别关系(其中外键属性形成主键)必须在共享表所有实体类型之间进行配置: modelBuilder.Entity() .HasOne(e => e.Details)....包含定义导航实体是所有者。当查询所有者,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同表。...: 在生成SQL,该方法名称将用作函数名称(本例中为用户定义函数),但在方法注册期间可以覆盖名称和模式 目前只支持标量功能 必须自行在数据库中创建映射函数,EF Core迁移不会对其进行创建...,添加更多数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符方法,以便可以LINQ查询中调用它们。

3.8K90

ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单CRUD操作

创建ASP.NET Core Web应用程序: 注意,本章节主要以APS.NET Core 3.1版本作为博客样式实例!...三、创建对应数据库表实体模型:   注意该篇博客使用是手动模型优先方式进行数据库表字段与模型属性映射,当然如果大家觉得这样子比较麻烦的话可以真正意义上模型优先,直接创建模型program.cs...创建用户模型(UserInfo): 注意:属性大小写和数据库中表字段保持一致,Id 属性成为此类对应数据库表主键列。 默认情况下,EF Core 将名为 Id 或 xxxID 属性视为主键。.../// /// TODO:当数据库创建完成后, EF 创建一系列数据表,表默认和 DbSet 属性名相同。...定义 DbSet 属性代码之后,添加下面代码,对DbContext指定单数来覆盖默认

2.7K10

Entity Framework 约定

如果一个类中既没有id属性,也没有类+id属性,那么代码在运行时将会报错,因为EF没有找到符合要求字段创建主键。...二、关系约定 在数据库中,我们可以通过多张表关联查询出数据,这多张表之间关联,就是他们关系。同样,也可以模型中定义这样关系。...EF定义关系要使用到导航属性,通过导航属性可以定义多个模型之间关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...当EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间关系将会配置成可选,Code First 不会再关系上配置级联删除。...First 不能推断出模型中主键,并且没有通过Data Annotations 或者Fluent API进行手动配置主键,该模型将会自动被配置为复杂类型,检测复杂类型要求该类型没有引用实体类型属性

1.3K10

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

映射规则 通过简单示例,我们可以看到EF映射规则是什么。基于约定由于配置原则,EF实体类当做是一个单数形式类型描述,把表认为是实体集合,所以表名为类复数形式。...对于主键,默认情况下EF会检索实体类有没有名为Id或者类+Id属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键EF检索到主键类型是数字类型的话,会自动添加自增长约束。...对于其他属性,EF会自动按照同名形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也EF上下文中,EF会把这种属性称为导航属性。...EF一旦类里检索到了导航属性,就会去寻找对应外键。EF会认为 属性+Id或者类+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类主键类型一致,则认为是外键。...)] 用来表示这个字段第一次插入数据库,值由数据库提供 [ForeignKey("ModelAId")] 表示该导航属性具体值由 名称为 ModelAId 属性维护,如果没有该属性,EF则记录添加但不对外显示

2.6K21

EF 约定介绍

当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键时候,EF会默认将长得最像Id属性(且类型为GUID)设为主键 (2)、设计实体,当一个实体包含一个集合属性...,该集合属性里面的元素是另一个实体,则默认未一对多关系,即使没有显示指定一对多关系,EF会默认设置主外键(主从)关系 (3)、一对一实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...(Primary Key Convention) 当没有显示指定实体主键时候,EF会默认将长得最像Id属性(且类型为GUID)设为主键,如果类中属性(Property)名称为 ID (不区分大小写...(对象间关系1:0或1:1),或者对象集合(对象间关系1:*或*:*),Code First 能够根据导航属性定义方式来推断实体关系.并映射到数据库表中....除了导航属性规定实体关系外,外键属性来式规定实体间方式一种手段.Code First能够推断以下命名属性为外键(优先级从上到下): (1)、导航属性+关联实体主键名 (2)、关联实体实体+

1.6K100

Entity Framework Core 2.0 新特性

ef core 2.0 中,我们将自定义DbContext类型注册到DbContextPool服务中,可让该数据库上下文类型实例重复使用。...要使用表拆分,必须在共享表所有实体类型之间配置标识关系(外键属性构成主键) 示例代码: 1 modelBuilder.Entity() 2 .HasOne(e => e.Details...按照惯例,将为所属类型创建一个影子主键,它将通过使用表拆分映射到与所有者相同表。...目前只支持标量函数 EF Core迁移将不负责创建它,您必须在数据库中创建映射函数 九.code first 实体配置   EF6可以通过 EntityTypeConfiguraiton 封装特定实体类型配置代码...,EF Core2.0中,这个特性回来了(EF Core 之前 core版本不支持)。

1.8K50

EF简介

ORM: 广义上:ORM指的是面向对象模型和关系型数据库数据库之间相互转换; 狭义上:ORM可以被认为是,基于关系型数据库数据存储,实现一个虚拟面向对象数据接口。 ?...一、当添加完EF实体之后: 1、系统会自动生成一个(对应ef模块.content.tt文件),  这个模版是帮助我们生成ef访问上下文,里面有一个数据库实体,上面这个例子是TestEntities实体...2、系统还会生成一个(对应ef模块.tt文件),这个模版是帮助我们生成一个数据库对应实体. 3、另外需要注意一点,系统还会生成一个(对应ef模块.Designer.cs文件)这个文件ef4.0...1、当使用上下文操作数据库表,被操作表必须含有主键,否则回报错。...而里面的值就是我们刚才所添加值,说明我们执行完数据库添加操作之后,数据库里面的数据马上将我们所添加数据马上映射给了当前实体对象,所以当我们在下面指定需要修改记录主键,如果修改和添加共用同一个对象

1.4K80

张高兴 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

EF Core 对 PostgreSQL 版本没有要求,但后续博客介绍编写实体类生成工具要求 12 及以上版本。...简单来说 Code First 是先编写 C# 实体类,EF 会根据实体之间关系创建数据库;Database First 是先设计和创建数据库,EF 根据数据库表结构生成 C# 实体类。...手动创建实体类 下面将手动编写两个实体类 Hospital.cs 和 Doctor.cs,以熟悉 EF Core Attribute 是如何将数据库表和实体之间建立联系。...modified_dt")] public DateTime ModifiedDt { get; set; } = DateTime.Now; } 导航属性 导航(Navigation)属性是数据库表之间关系实体类中体现...设置导航属性之前,首先需要理清楚医院和医生存在着怎样数量关系,医生是医院附属,一家医院下面会有多名医生,因此医院和医生之间是一对多关系。为了方便理解,下面只保留主键、外键和导航属性。

2.4K10

.NET EF Core(Entity Framework Core

EF Core与其他ORM比较 1、Entity Framework Core(EF Core)是微软官方ORM框架。...4、EF一些类命名空间以及一些方法名字EF Core中稍有不同。 5、EF不再做新特性增加。...关系数据库只是盛放模型数据一个媒介而已,理想状态下,程序员不用关心数据库操作。 根据对象定义变化,自动更新数据库中表以及表结构操作,叫做Migration(迁移)。...:创建实现了IEntityTypeConfiguration接口实体配置类,配置实体类和数据库表对应关系 class BookEntityConfig : IEntityTypeConfiguration...;Username=postgres;Password=123456"); EF Core实体配置 主要规则: 1:表采用DbContext中对应DbSet 属性

10411

02-EF Core笔记之保存数据

Core中,除了独立模型外,还有与模型关联数据,这部分数据通过独立模型添加到模型中,SaveChanges将会持久化到数据库中。...EF Core对于提供了更细粒度管理,它允许我们定义删除行为,来控制依赖关系被移除,如何处理关系实体。...关系数据库上,EF Core 会对任何 UPDATE 或 DELETE 语句 WHERE 子句中并发令牌值进行检查。 执行这些语句后,EF Core 会读取受影响行数。...除此之外,如果实体使用自动生成主键EF Core则可以通过判断主键是否为默认值(null、0)来判断是新增或更新。...并且,对于这种情况,可直接使用DbContextUpdate操作进行,Update操作内部会完成该判断。 如果实体主键不是自动生成,则需要手工判断实体是否存在。

1.7K40

如何处理EF Core多对多关系

多对多关系不像其他关系那么简单,在这篇文章中,我将向您展示如何创建多对多关系以及如何在 EF Core 中使用它们。 模型 多对多简单而实用例子可能是某种数字电子商务商店。...本文发表EF Core 无法处理这种情况。...【实体类型“CartItem”需要定义一个主键。】 对,CartItem没有主键, 由于它是多对多关系,因此它应该具有复合主键。复合主键类似于常规主键,但它由两个属性(列)而不是一个属性组成。...从多对多中删除 删除是指删除购物车Cart和商品Item之间关系CartItem。...以下示例中,我们不会删除购物车Cart或商品Item,只会删除购物车Cart和商品Item之间关系CartItem。 让我们从购物车Cart中删除单个产品Item开始。

2.9K20

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

它提供了 Code First 开发方法,允许开发人员通过代码来定义模型、配置映射关系创建数据库。此外,EF Core 还支持数据迁移,使得开发过程中数据库模式变更更加容易管理和部署。...ORM 主要目的是关系数据库和业务实体对象之间做一个映射,使得开发者可以使用面向对象方式来操作数据库,而不必直接编写 SQL 语句。...ORM 核心概念包括: 对象(Objects): 应用程序中表示业务实体关系(Relationships): 对象之间交互和联系,例如一对多、一对一或多对多关系。... OnModelCreating 方法中,我们配置了 Blog 实体主键。...使用Find方法:当需要获取一个已知主键实体,使用Find方法而不是FirstOrDefault或SingleOrDefault。

14800

使用identity+jwt保护你webapi(一)——identity基础配置

User,Context 创建自己User实体,继承IdentityUser,IdentityUser中已经有一些基础字段,你可以在你AppUser中额外定义一些自己需要字段,比如Address...identity相关表: 修改主键类型/表 identity用户,角色表主键默认类型是string,默认值是Guid.NewGuid().ToString(),数据量不大无所谓,否则可能存在性能问题...identity支持主键类型修改;想要修改表,修改字段长度等等,也是非常容易: public class AppUser : IdentityUser { [Required]...migrations add AppDbContext_Modify_PK_Type dotnet ef database update 查看主键,表已成功修改: 最后 本篇完成了identity...参考: ASP.NET Core 简介 Identity | Microsoft Docs[1] Mohamad Lawand - DEV Community[2] 参考资料 [1] ASP.NET Core

1.8K20

【数据库系统概论】

主要功能: 数据定义功能 提供数据定义语言(DDL) 定义数据库中数据对象 数据组织、存储和管理 分类组织、存储和管理各种数据 确定数据存储级别上结构和存取方式 实现数据之间联系...(主键) (4)实体型(Entity Type) 用实体及其属性集合来抽象和刻画同类实体称为实体型 (5)实体集(Entity Set) 同一类型实体集合称为实体集 (6)联系(Relationship...) 现实世界中事物内部以及事物之间联系信息世界中反映为实体(型)内部联系和实体(型)之间联系。...实体内部联系: 是指组成实体各属性之间联系 实体之间联系: 通常是指不同实体之间联系 实体之间联系有一对一(1:1)、一对多(1:n)和多对多(m:n)等多种类型 实体-联系方法(Entity-Relationship...是关系模式某一状态或内容,是动态、随时间不断变化 (关系模式和关系笼统称为关系,根据上下文辨别) 关系完整性约束 实体完整性和参照完整性(关系模型必须满足完整性约束条件称为关系两个 不变性

1.3K10

Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库

public DateTime CreateTime { get; set; } public virtual Topic Topic { get; set; } } 上面定义两个实体对象之间通过...Topic.Posts 和 Post.Topic 属性建立了主外键关系,这两个表主键为 Id,且类型为 int ,这表示在下面的创建数据库过程中,EFCore 会自动为这两个实体对象建立关系主键... Migrations 文件夹中;当执行 Update-Database 命令后,EFCore 设计工具将根据 Migrations 中定义创建数据库,最终,控制台输出 Done 表示创建完成 ?...DB First 使用方式 很多时候,我们开发方式是先设计好数据库模型,然后再生成实体对象,这种方式对于从其它语言迁移到 .Net Core 上非常友好,从现有数据库中生成实体对象非常简单,只需要一个命令即可...表示延迟加载此关联对象, Code First 中,导航属性还起到主外键关系定义作用 结束语 本文介绍两种使用 EF Core 方式 通过一个简单 Forum 示例来一步一步了解了 EFCore

1.6K21

abp vnext2.0核心组件之DDD组件之实体结构源码解析

接着abp vnext2.0核心组件之模块加载组件源码解析和abp vnext2.0核心组件之.Net Core默认DI组件切换到AutoFac源码解析集合.Net Core3.1,基本环境已经完备...每一个聚合根都维护着一个并发令牌,初始化聚合根,直接给一个GUID值,貌似只EF Core中有效.其他ORM可能需要自行实现(个人理解,如果Dapper支持这种机制,请在评论区告知,万分感谢)。...当然对应有一个泛型版本,主键可自行指定 ? ok,整个聚合根结构也介绍完毕,比较简单. 3、审计实体 - 创建实体 (1)、创建实体 ?...只包含创建功能常规实体抽象.泛型版本主键可自行指定 如下: ? 整个设计我个人有一个疑问,如下: ? 主键不应当统一吗?欢迎评论区讨论. (2)、创建实体创建人抽象 ?...4、审计实体 - 创建修改型实体 (1)、创建修改型实体 如果当前实体同时具备创建和修改功能,那么可以使用如下实体抽象 ?

1.1K10

DDD理论学习系列(6)-- 实体

1.引言 实体对应英语单词为Entity。提到实体,你可能立马就想到了代码中定义实体类。...使用一些ORM框架,比如Entity Framework,实体作为直接反映数据库表结构对象,就更尤为重要。特别是当我们使用EF Code First,我们首先要做就是实体设计。...DDD中,实体作为领域建模工具之一,也是十分概念。 但DDD中实体和我们以往开发中定义实体是同一个概念吗? 不完全是。...ORM中,委派标识表现为int或long类型实体属性,来作为数据库主键。很显然,委派标识是为了迎合ORM而创建,且委派标识和领域实体标识无任何关系。...针对状态,我们需定义一个状态属性即可。 订单行为:支付、发货和关闭。针对行为,我们可以实体定义方法或创建单独领域服务来处理。 实体既然存在状态和行为,就必然会与事件有所牵连。

1.7K80

基于ABP落地领域驱动设计-02.聚合和聚合根最佳实践和原则

用于 EF Core关系型数据库 MongoDB 中,自然不适合有这样导航属性/集合。...然而,EF Core关系型数据库开发者可能会发现这个限制性规则是不必要,因为 EF Core 可以在数据库读写中处理它。...这并不意味着子集合实体应该总是有复合主键,只有当需要设置;通常是单一ID属性。 复合主键实际上是关系型数据库一个概念,因为子集合实体有自己表,需要一个主键。...另一方面,例如:MongoDB中,你根本不需要为子集合实体定义主键,因为它们是作为聚合根一部分来存储。 聚合根/实体构造函数 构造函数是实体生命周期开始地方。...业务逻辑和实体异常处理 当你实体中进行验证和实现业务逻辑,经常需要管理异常: 创建特定领域异常。 必要实体方法中抛出这些异常。

2.9K30
领券