EF Core-1

简介: 前几天了解到EF Core的开发模式:DB First(数据库优先),Model First(模式优先),Code First(代码优先)。

带着问题去思考,大家好!

前几天了解到EF Core的开发模式:DB First(数据库优先),Model First(模式优先),Code First(代码优先)。

我所接触的大多是DB First。如果大家了解的话,有些开源后台项目,基本都会有后两者,因为方便大家更快的去使用部署起来后台。

在建议的Layered ['leɪəd] Architecture [ˈɑːrkɪtektʃər]模式中,---表示层,业务层和数据层,其后Evans分析并引入两个关键变化。

一:将关注点放到layer上,而不是tier。layer是应用程序组件之间的逻辑分隔,而tier是物理上不同的应用程序和服务器。

二:识别的层数分为4各层-表示层-应用层-领域层和基础结构层

image.png

整体式应用程序

  自底向下设计,我们都是围绕着数据模型来进行开发设计,其中的过程以及尤其依赖数据模型的用户界面和体验。

   在整体式应用程序中,数据从底部的持久化存储到前端,然后在返回。

  根据分层架构,我们都知道,从存储到前端以及从前端到存储。我们不应该考虑把应用程序堆栈分成两部分吗?独立处理命令堆栈和读堆栈对于开发是不是更加有效果呢?所以NOSql存储来了,使得经典的RDBMS系统开始支持XML和JSON。这也正式Command and Query Responsibility Segregation(CQRS)模式的使用。

 

 image.png

以上是结合CQRS设计的分层架构模式

CQRS方法

CQRS不是万能的,重要的是他的思想。

  有经验的开发人员知道。创建一个理想的数据模型,使其能够将关系数据模型的原则和最终用户实际需要的视图的复杂性结合起来是很困难的。如果只有一个应用程序堆栈,就只能有一个面向持久化的数据模型,但是需要调整这个模型,使其能够有效的满足前端的需求。特别是与某种方法学(如领域驱动设计的额外的抽象层结合起来时),后端(业务逻辑和数据访问逻辑)的设计很容易变得一团乱。

  以上问题。CORS通过将设计问题分解为两个较小的问题,新应用程序架构设计解决问题,并不释施加外部约束,使设计变得更加简单。具有不同的堆栈的好处是,容易为实现名利和查询使用不同的对象模型。有必要,可以为命令使用一个完整的领域模型,为表示使用一个定制的普通的数据传输对象,可能这些对象从SQL查询具体化的,需要多个表示前端,只需要额外创建读模型。整体复杂度是个体复杂度的和,而不是笛卡尔积。

  1:不同的数据库

  分解成不同的堆栈有一些问题,两个堆栈同步问题,数据命令写入能够被一致地读回?根据自身业务,CQRS实现可以基于一种两种数据库,如果使用一个共享数据库,共享数据库确保了经典的ACID一致性,只需要在读堆栈中的普通查询做一些额外的工作。

  性能和扩展行,可以考虑为命令堆栈和读堆栈使用不同的持久化端点。

image.png

什么时候用CQRS?

这是一种模式,CQRS架构模式主要是被设计来解决高并发业务场景的性能问题。

基础结构层的构成

基础结构层是与使用具体的技术相关的所有东西,包括数据持久化O/RM框架(EF),外部的Web服务,特定的安全API,日志记录,跟踪,IOC容器,缓存等。最突出的是组件的持久化层,也就是数据访问层。

持久化层 缓存层 外部服务这些已经非常成熟,不在这里赘述。

相关文章
|
数据库 C++
.NET Core 使用 EF 出错的解决方法
.NET Core 使用 EF 出错的解决方法
455 0
.NET Core 使用 EF 出错的解决方法
|
2月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
4月前
|
SQL API 数据库
【Entity Framework】EF配置文件设置详解
【Entity Framework】EF配置文件设置详解
30 0
|
11月前
|
关系型数据库 MySQL 数据库
EF Core反向工程
EF Core反向工程,数据库创建表使用命令生成上下文
88 0
|
SQL 存储 数据处理
5.1EF Core原理
对普通集合使用where等方法查询出来的返回值为IEnumerable类型 但是对DbSet使用用where等方法出查询出来的返回值为IQueryable类型
|
开发框架 算法 .NET
4.1EF Core
EF Core是微软官方的ORM框架,ORM即对象关系映射,也就是我们可以直接操作C#中的对象就可以完成数据库的操作。
|
开发框架 .NET 数据库连接
7.3EF Core与ASP.NET Core集成
7.3EF Core与ASP.NET Core集成
|
API 数据库 索引
4.2EF Core的实体类配置
本文主要讨论实体类和数据表是如何映射的,以及实体类中的属性是如何与数据表中的列映射的
|
关系型数据库 MySQL 编译器
在 EF Core 7 中实现强类型 ID
本文主要介绍 DDD 中的强类型 ID 的概念,及其在 EF 7 中的实现,以及使用 LessCode.EFCore.StronglyTypedId 这种更简易的上手方式。
229 0
在 EF Core 7 中实现强类型 ID
|
缓存 关系型数据库 MySQL
C#-EF Core使用MySQL数据库
Entity Framework Core (EF Core)是微软推荐的基于.NET Core 的应用程序数据访问技术。开源,轻量级,可扩展并且支持跨平台开发。EF Core是一种对象关系映射器(ORM),通过应用程序实体对象和关系数据库中的数据的映射,使得开发人员能够以面向对象的方式处理数据。
590 0