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

EF核心-为什么实体被保存为新的数据库实体,而它们应该是外键关系?

EF核心(Entity Framework Core)是一个开源的对象关系映射(ORM)框架,用于将数据库中的数据映射到应用程序中的对象模型。它提供了一种简化和自动化数据访问的方式,使开发人员能够更专注于业务逻辑而不是数据库操作。

在EF核心中,实体(Entity)是应用程序中的对象模型,而数据库实体(Database Entity)是数据库中的表。当我们使用EF核心进行数据操作时,实体对象会被保存为新的数据库实体,而不是作为外键关系。

这是因为EF核心采用了对象关系映射的方式,将实体对象映射到数据库表中的行。每个实体对象都对应数据库中的一条记录,而不是作为外键关系存在。这种映射方式使得我们能够以面向对象的方式操作数据,而不需要直接操作数据库。

优势:

  1. 简化开发:EF核心提供了简单易用的API,使开发人员能够更快速地进行数据访问和操作,减少了编写大量重复的数据库操作代码的工作量。
  2. 高性能:EF核心具有良好的性能,它使用了缓存和延迟加载等技术来提高数据访问的效率,同时还支持异步操作,能够更好地处理大量数据和并发访问。
  3. 跨数据库支持:EF核心支持多种数据库,包括关系型数据库(如SQL Server、MySQL、PostgreSQL等)和非关系型数据库(如MongoDB、Redis等),使开发人员能够更灵活地选择适合自己项目的数据库。
  4. 可测试性:EF核心提供了一系列的测试工具和模拟器,使开发人员能够更方便地进行单元测试和集成测试,确保代码的质量和稳定性。

应用场景:

  1. Web应用程序:EF核心可以用于开发各种Web应用程序,包括电子商务网站、社交媒体平台、博客系统等,提供数据访问和操作的功能。
  2. 移动应用程序:EF核心可以用于开发移动应用程序,包括iOS和Android平台上的原生应用程序和混合应用程序,提供数据存储和同步的功能。
  3. 企业应用程序:EF核心可以用于开发各种企业级应用程序,包括客户关系管理系统、人力资源管理系统、供应链管理系统等,提供数据管理和分析的功能。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 云数据库 TencentDB:https://cloud.tencent.com/product/cdb 腾讯云的云数据库服务,提供高可用、高性能、可扩展的数据库解决方案,支持多种数据库引擎,包括MySQL、SQL Server、MongoDB等。
  2. 云服务器 CVM:https://cloud.tencent.com/product/cvm 腾讯云的云服务器服务,提供弹性计算能力,可根据业务需求快速创建、部署和管理虚拟服务器,支持多种操作系统和应用程序。
  3. 云存储 COS:https://cloud.tencent.com/product/cos 腾讯云的云存储服务,提供安全可靠的对象存储解决方案,支持海量数据存储和访问,适用于各种应用场景,包括图片、音视频、备份等。

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

EF 约定介绍

,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示指定一对多关系,EF会默认设置主外(主从)关系 (3)、一对一实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...(对象间关系是1:0或1:1),或者对象集合(对象间关系是1:*或*:*),Code First 能够根据导航属性定义方式来推断实体关系.并映射到数据库表中....除了导航属性规定实体关系,属性来式规定实体间方式一种手段.Code First能够推断以下命名属性为(优先级从上到下): (1)、导航属性名+关联实体主键名 (2)、关联实体实体名+...关联实体主键名 (3)、关联实体主键名 注: (1)、当关系检测到,Code First会根据可空性来推断关系具体形式;如果属性是可空,那么关系会被设置为可选,否则,关系就是必选.... (2)、当关联实体属性设置为不为空,Code First会设置级联删除,反之不会。

1.6K100

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

对于习惯使用 EF Core 和 关系数据开发者来说,这看起来似乎有些奇怪。获取 Issue 所有数据是没有必要且低效为什么我们不直接执行一个SQL插入命令到数据库不查询任何数据呢?...因为在 MongoDB 中,一个聚合对象(包括子集合)保存在数据库一个集合中,而在关系数据库中,它被分布在数据库中几个表中。...如果用例使用单个聚合,读取并保存为单个单元,那么对聚合对象所做所有更改,将作为原子操作保存,不需要显式地使用数据库事务。...用于 EF Core 和 关系数据库 在 MongoDB 中,自然不适合有这样导航属性/集合。...然而,EF Core 和关系数据库开发者可能会发现这个限制性规则是不必要,因为 EF Core 可以在数据库读写中处理它。

2.9K30

EntityFramework Core 学习扫盲

添加实体和映射数据库 使用EF CORE中添加实体,约束属性和关系,最后将其映射到数据库方式有两种,一种是Data Annotations,另一种是Fluent Api,这两种方式并没有优劣之分,全凭开发者喜好和需求...假如导航属性中存在对其他实体引用,那么即便不把引用实体配置为显式引用,引用实体也可以隐式地映射到数据库中。 如以下代码所示。...备用 Alternate Keys是EF CORE引入新功能,EF 6.X版本中并没有此功能。备用可以用作实体中除主键和索引唯一标识符,还可以用作目标。...在Fluent Api中,有两种方法可以指定备用,一种是当开发者将实体属性作为另一个实体目标,另一种是手动指定。EF CORE默认约束是前者。...在EF CORE中,主体(Principal Entity)指的是包含主键/备用实体。所以在一般情况下,所有的实体都是主体。主体(Principal Key)指的是主体中主键/备用

9.5K90

EF Core增删改查

那么为什么,我推荐使用配置类加载吗? 因为在实际开发中,一个完整程序或者网站实体类都会大于10,而这些如果使用属性形式会非常多,不利于实际开发。...删除,如果在配置导航属性时,没有设置级联删除,删除当前元素,如果另一端是可空类型,并不会删除导航属性另一端元素只会设置键指向为NULL,如果另一端是不可空,那么就会同时删除。...: 行为名称 对内存中依赖项/子项影响 对数据库依赖项/子项影响 Cascade 删除实体 删除实体 ClientSetNull(默认) 属性设置为 null None SetNull 属性设置为...null 属性设置为 null Restrict None None 而对于不可为NULL来说,枚举DeleteBehavior值起以下作用: 行为名称 对内存中依赖项/子项影响 对数据库依赖项...如果使用Linq表达式,则没关系EF Core在遇到这种情况时候,会把数据库里所有数据都加载到上下文中,再执行后续查询等操作。

3K20

《Entity Framework 6 Recipes》翻译系列 (1) —–第一章 开始使用实体框架之历史和框架简述「建议收藏」

他们都希望在进化式开发和结构化数据中架起一座桥。有趣是,一个解决方案-对象关系映射(ORM)产生了。   实体框架,以及集成查询语言(LINQ)框架,他们均出自微软,使我们能处理抗阻失配问题。...这里关键点在,开发人员和项目相关人员使用表示应用程序上下文中领域实体类,DBA构建底层数据库表以求创建高效和数据库实体框架能很容易地架起两者单桥梁。...导航属性(Navigation properties)是指跟其它实体有关联属性(数据库关系)。在实体类型中不是导航属性属性通常叫做标量属性(scalar proerties).   ...每个实体类型都有一个属性或一个属性集来指示它实体。在实体框架中一个实体唯一标识一个实体,一般它被映射到实体对应底层数据库主键。   ...最后,没有讨论实体框架不提到上下文对象(context object)

1.3K20

EntityFramework 键值映射

如果在 EF OnModelCreating 中配置了实体映射,也就是 SQL Server 中 ForeignKey,那么我们在添加实体时候,主实体主键值会自动映射到子实体键值,并且这个操作在一个...SaveChanges 中,但如果没有在 OnModelCreating 中进行映射配置,我们添加实体时候,就不会自动映射键值了,什么意思呢?...可以看到,Student 表中 ClassId 值是 0,并不是我们预想 1,这是一个问题,在不增加情况下,我们一般会这样解决: static void Main(string[] args...就是实体更改了,需要进行 EF 迁移,如果你进行 EF 迁移的话,会发现,虽然我们没有在 OnModelCreating 中进行 ClassId 映射配置,但 EF 也会自动映射 ForeignKey...我们解决这个问题前提条件是“不增加配置”,所以我们要让 EF 忽略实体更改: public SchoolDbContext() : base("db_school"){ Database.SetInitializer

4.1K50

Entity Framework Core 2.0 特性

使用表拆分识别关系(其中外属性形成主键)必须在共享表所有实体类型之间进行配置: modelBuilder.Entity() .HasOne(e => e.Details)....CLR类型,但是由于CLR类型不能识别,所以必须从另一个实体类型导航到它。...显式编译查询API已经在以前版本EF和LINQ to SQL中可用,以允许应用程序缓存查询翻译,以便它们只能计算一次并执行多次。...,并将更多逻辑生成SQL让它在数据库中执行(不是内存中),并且从数据库中检索更少不必要数据。...() 添加了EF.Functions属性(注意,这里应该是可以扩展,添加更多数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符方法,以便可以在LINQ查询中调用它们

3.8K90

金三银四面试:C#.NET面试题中高级篇5-Linq和EF

目录 1.EF(Entity Framework)是什么? 2.什么是ORM? 3.为什么EF不用原生ADO.NET? 4.如何提高LINQ性能问题? 5.什么是IEnumerable?...10.除了EF,列举出你知道ORM框架? 11.在哪些类型额项目中你会选择EF? 为什么? 12.请说明EF中映射实体对象几种状态? 1.EF(Entity Framework)是什么?...这样设计好处在于我们可以针对概念模型进行所有数据操作不必关心数据存储关系,使我们可以更加自然采用面向对象方式进行面向数据应用程序开发。 2.什么是ORM?...ORM指的是面向对象对象模型和关系数据库数据结构之间互相转换。 (表实体跟表之间相互转换) ORM框架有很多,EF框架是ORM框架其中一种,是实现了ORM思想框架。...O=>表实体 M=>映射关系 R=>数据库.表 --->详解 3.为什么EF不用原生ADO.NET?

4K30

Entity Framework 基础知识走马观花

例如:NavigationProperty 导航属性,因为T_Person表与T_Class、T_Message表都存在一对一或一对多关系(即存在外),因此在EF模型所生成对象实体中,加入了所在实体导航属性...(2)针对外延迟加载   首先,我们有这样两张表,他们是1:N关系;其中ClassId是T_Person; ?   ...3.3 使用Include提高查询效率   前面我们看到了延迟加载在EF中被广泛应用,但是延迟加载对于加载也存在不足:那就是每次调用实体都会去查数据库。   ...(3)但是,EF也做了一个小优化:对于相同加载请求,只会执行一次;例如,这里存在多个ClassId=1Person记录,因此它们都只会执行一次即可; ?   ...部分数据存入T_ClassT_Person属性中,也就是都存入了内存中,后面再次访问实体只需要从内存中读取不用再发出多个数据库查询请求了。

1.3K20

EF基础知识小记一

1、EF等ORM解决方案出现原因 因为软件开发中分析和解决问题方法已经接近成熟,然后关系数据库却没有,很多年来,数据依然是保存在表行列这样模式里,所以,在面相对象和高度标准化数据库中产生了一个失配...2、集成查询语言LINQ LINQ和EF都出自于微软,都能帮助我们解决失配问题.使用EF实体框架,我们能在设计器中(Model First)或者代码(Code First)对领域实体进行建模.还能建立实体类之间关系...,不是关系数据库结构和对象.实体数据模型允许你自定义实体类和关系数据库表之间映射.不仅仅是一对一或者类到表映射. ?  ...这里关键点在,开发人员和项目相关人员使用表示应用程序上下文中领域实体类,DBA构建底层数据库表以求创建高效和数据库实体框架能很容易地架起两者单桥梁。...(数据库关系) 7、上下文对象 下文对象为ObjectContext对象,现在,实体框架支持另一个最新名为DbContext上下文对象。

1.6K90

如何运用领域驱动设计 - 存储库

此时就会使得领域对象与我们基础架构产生紧密耦合,那么我们应该怎么隔绝这一层耦合关系,使它们自身职责界限更加清晰呢?是的,这就要用到我们今天要讲内容 - 存储库。...那为什么我不能直接调用DbContext呢?是的,这样疑问相信不止很多同学都遇到了。所以在微软EF Core 3.x官方教程中,提到了这样一句话: ?...回到开篇提到一个问题:假如使用了EF这样ORM框架,为什么还需要嵌套一层仓储呢?...具有领域意图东西我们都应该领域层,类似于数据库访问实现这类基础架构应该放在基础设施层。所以可以看出我们抽象出来仓储接口是应该放在领域层仓储实现可以放在基础设施层 。...所以我们必须得保证存储库是有事务事务管理是由工作单元来提供。这也是为什么存储库每次都和工作单元这一概念一同出现。

95330

EF基础知识小记五(一对多、多对多处理)

本文主要讲EF一对多关系和多对多关系建立 一、模型设计器 1、一对多关系 右键设计器新增关联 导航属性和属性可修改 2、多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生成数据库...,根据数据库生成模型就能生成对应模型 三、多对多无载荷 根据上面的建表语言,我们能得出Teacher表和Student表在数据库关系如下图: 数据库关系图: 在模型设计器中关系如下图: 模型设计图...: 观察二图区别,发现数据库关系图中StudentTeacher(链接表)没有出现在模型设计器中。...因为实体框架不支持在关联上附加载荷,所以有载荷联结将会生成一个实体. 因为这个附加载荷,Order需要通过OrderItem来获取与其关联Product项....当你导入表到你模型时,你将得到两个包含一对多关系实体,这意味着,你代码为将来有可能出现多载荷做好了准备。增加一整型标识列代价通常很小,但给模型带来了更大灵活性。

2.4K80

02-EF Core笔记之保存数据

,只需将Post对象中Blog引用设置为null即可,此时EF Core将判断是否为必须关系,如果为必须关系,则从数据库中删除Post对象,如果为非必须关系,则将数据库中对应设置为null。...级联删除 级联删除是数据库概念,意思是当主体被删除时,所有依赖该主体项(通过关联)也会被自动删除。...EF Core对于提供了更细粒度管理,它允许我们定义删除行为,来控制依赖关系移除时,如何处理关系实体。...需要注意是,EF Core删除行为仅对已加载数据生效,如果关系未加载到内存中,则超出了EF Core管控范围。 事务 事务允许以原子方式处理多个数据库操作。...在关系数据库上,EF Core 会对任何 UPDATE 或 DELETE 语句 WHERE 子句中并发令牌值进行检查。 执行这些语句后,EF Core 会读取受影响行数。

1.7K40

EntityFramework快速上手

EF有三种使用场景: 从数据库生成Class, 由实体类生成数据库表结构, 通过数据库可视化设计器设计数据库,同时生成实体类。 O/RM是什么?...EDM (实体数据模型):EDM包括三个模型,概念模型、 映射和存储模型。 概念模型 ︰ 概念模型包含模型类和它们之间关系。独立于数据库设计。...存储模型 ︰ 存储模型是数据库设计模型,包括表、 视图、 存储过程和他们关系。 映射 ︰ 映射包含有关如何将概念模型映射到存储模型信息。.../4.5,EF6是独立EntityFramework.dll,不依赖 .net Framework。...使用NuGet即可安装EF。 ? ? 实例创建实体数据模型 使用向导创建实体类,或添加,傻瓜式~

1.8K50

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

映射规则 通过简单示例,我们可以看到EF映射规则是什么。基于约定由于配置原则,EF实体类当做是一个单数形式类型描述,把表认为是实体集合,所以表名为类名复数形式。...对于其他属性,EF会自动按照同名形式映射到数据表中。 对于,如果在类里添加了引用类型,而这个引用类型也在EF上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应EF会认为 属性名+Id或者类名+Id 可能是属性,如果找到名称一致且类型与导航属性目标类主键类型一致,则认为是。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求属性,EF会自己添加一个属性。 对于一对一,EF要求导航属性双方都应该具有配置。 一对多,EF要求多一方设置。...总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分内容,我留下了相关FluentAPI介绍,我打算在下一篇介绍。因为这部分内容比较麻烦,而且使用率也相当高。

2.7K21

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

,虽然使用 EF Core 并不需要掌握复杂数据库知识,也不需要会写复杂 SQL,但必要表结构关系还是应该要理解。...简单来说 Code First 是先编写 C# 实体类,EF 会根据实体类之间关系创建数据库;Database First 是先设计和创建数据库EF 根据数据库表结构生成 C# 实体类。... Code First 中手动编写实体类这一步是不可避免,在大型项目中数十上百实体类,这些工作量是不容小觑。因此本文不会介绍 Code First 有关操作。...在设置导航属性之前,首先需要理清楚医院和医生存在着怎样数量关系,医生是医院附属,一家医院下面会有多名医生,因此医院和医生之间是一对多关系。为了方便理解,下面只保留主键、和导航属性。...Column("id")] public int Id { get; set; } public virtual List Doctors { get; set; } } 数据库表之间通过建立数量关系

2.4K10

01-EF Core笔记之创建模型

实体之间关系,可以参照数据库设计关系来理解。...EF实体框架,它实体会映射到关系数据库中。所以通过关系数据库表之间关系更容易理解实体关系。...在数据库中,数据表之间关系可以分为一对一、一对多、多对多三种,在实体之间同样有这三种关系,但是EF Core仅支持一对一、一对多关系,如果要实现多对多关系,则需要通过关系实体进行关联。...,显然无论在Blog或Tag中定义都不合适,此时就需要一张关系表来进行关联,这张表就是BlogTag表。...这里介绍两个概念 ModelClrType:模型实体类型 ProviderClrType:数据库提供程序支持类型 举个例子,string类型,对应数据库提供程序也是string类型,枚举类型,对数据库提供程序来说没有与它对应类型

3K20

「数据架构」什么是实体关系图(ERD)?

你会学到ERD是什么,为什么,ERD符号,如何画ERD,等等,以及一些ERD例子。 什么是ER图? 首先,什么是实体关系图? 实体关系图,又称ERD、ER图或ER模型,是一种用于数据库设计结构图。...ERD包含不同符号和连接器,它们可视化两个重要信息:系统范围内主要实体,以及这些实体之间相互关系。 这就是为什么它被称为“实体”“关系”图(ERD)!...您可以轻松地定位实体、查看它们属性并确定它们与其他实体之间关系。所有这些都允许您分析现有数据库并更容易地发现数据库问题。...第三条记录无效,因为另一条记录已经使用了ID 'PDT-0002'值。 ? 也称为FK,是对表中主键引用。它用于标识实体之间关系。注意,不一定是唯一。多条记录可以共享相同值。...多对多基数例子 多对多关系是指两个实体X和Y之间关系,其中X可以链接到Y多个实例,反之亦然。下图显示了一个多对多关系示例。注意,在物理ERD中,多对多关系分割为一对一对多关系

4.8K21
领券