ef efcore 区别,efcore的优缺点-ag尊龙凯时集团

探索本节


对三种数据库关系类型进行建模


创建和修改数据库的迁移方法


定义并创建应用程序dbcontext


将复杂查询拆分为子查询


本章介绍如何使用efcore进行数据库读取,主要称为查询。在efcore中,您创建一个包含三种主要类型的数据库关系的数据库在本课程中,您将学习如何使用efcore创建和更改数据库结构。


接下来,您将学习如何使用efcore访数据库并从数据库表中检索数据。在探索加载相关数据和主数据的不同方法之前,请先了解efcore查询的基本格式。例如,第一章加载与该书相关的作者。


了解如何加载相关数据后,您可以开始编写运行图书销售网站所需的更复杂的查询。这包括排序、过滤和分页,以及将这些单独的查询命令组合在一起以创建复杂的数据库查询。


21场景设置——我们的图书销售网站


在本章中,我们开始构建一个图书销售网站,称为图书app。此应用程序示例提供了一个用于查看查询中的关系的出色工具。本节介绍在bookapp中访数据库所需的数据库、各种类以及efcore的部分。



您可以在线访图书应用程序。


211图书app相关数据库


尽管可以创建包含有关书籍、作者和评论信息的表,但这样做在关系数据库中效果不佳,特别是因为评论字段的长度可能会有所不同。关系数据库范例对冗余数据进行分区,例如作者表。


有多种方法可以对数据库中的不同图书数据进行分类和存储,但在本例中,数据库将为每种主要关系类型提供一种方法ef-core关系。这三种类型分别是


提供一对一关系价格手册


一对多关系书评


给作者的书


提供一对一关系价格手册


促销定价适用于书籍。这是通过向priceoffer实体类添加可选字段来实现的。这是一对一题的示例。尽管从技术上讲它是一对零或一对一的关系,但efcore对待它的方式是一样的。参见图21。


要计算一本书的最终价格,您需要查看priceoffer表中的数据行,这些数据行通过外键链接。如果该行中有数据,则newprice字段中的数据将替换为找到的价格,并且promotionaltext值将显示在屏幕上(例如$40$30夏季特价仅在本周提供)!


一对多关系书评


允许用户对书籍发表评论。他们可以根据自己的意愿对这本书进行评分和评论。由于一本书可以有零个或无限数量的评论,因此我们需要创建一个表来存储这些数据。在此示例中,您可以将此表命名为review。books表与review表具有一对多关系。如下图22所示


在摘要显示中,您应该计算评论数量并计算平均星级以显示摘要。例如,以下是可以从一对多关系创建的典型屏幕显示


2位顾客有45。


多对多关系关于作者的书籍


一本书可以由多个人写,一个作者也可以写多本书。因此,您需要一个books表来存储图书数据,需要一个authors表来存储作者数据。books表和authors表之间的链接表称为链接表。


这种关系的典型屏幕表示如下


迪诺埃斯波西托、安德里亚萨尔塔雷洛


212本章未涵盖的其他关系类型


efcore允许您定义从其他实体类继承的实体类。例如,您可以将priceoffer定义为从bookk继承,以实现与之前的一对一关系相同的结果。efcore通过每层一张表的tph模式来实现,这将在第7章中讨论。


另一种类型的关系是层次关系,其中数据项集通过层次结构相互关联。一个典型的例子是employee类。这里我们有一个指向员工的经理的关系,可以称为自我关系。


efcore使用与一对一和一对多相同的方法提供层次关系。我们将在第7章中更详细地讨论这种关系并解释如何配置它。


213最终数据库显示所有表。


图24显示了将用于本章和第3章示例的bookapp数据库。它包含所描述的所有表,包括完整书籍表的所有列的定义。


备忘录


该数据库图使用与第1章相同的布局和术语。pk代表主键,fk代表外键。


为了帮助您理解该数据库,图25显示了屏幕上显示的书籍列表,但请重点关注一本书。


映射到数据库的214个efcore类


我创建了5个类,映射到数据库中的5个表。这些是多对多关系表book、priceoffer、review、author和bookauthor。


这些类称为实体类,表示它们由efcore映射到数据库。从软件的角度来看,这些类没有什么特别的。这是一个普通的net类,有时也称为普通旧clr对象/poco。实体类表明该类已被efcore映射到数据库。


主要实体类是book类,如下所示。您可以看到它与priceoffer实体类、review实体类集合和bookauthor实体类集合关联。bookauthor将book类连接到一个或多个作者。


为简单起见,我们使用efcore的契约组合方法对数据库进行建模。我们使用efcore遵循命名实体类主键和外键属性的约定。此外,网络导航属性(例如icollectionreviews)定义了所需的关系类型。例如,reviews属性类型是icollection,并且这种关系是一对多关系。第6章和第7章介绍了在efcore中定义数据库模型的不同方法。


引用


《实体框架核心执行》


微信公众号智客坊


本文对于ef efcore 区别和efcore的优缺点的热门内容介绍到这里就结束了,如果本文对诸位有所帮助,请关注并收藏本站。

除非特别注明,本站所有文字均为原创文章,作者:admin

网站地图