.Net 6搭建仓储模式框架学习(一)

仓储模式

.NET仓储模式是一种软件设计模式,用于将应用程序的数据访问逻辑与业务逻辑分离。它通过将数据访问操作封装在一个单独的仓储类中,使得业务逻辑层可以独立于具体的数据存储技术。

在.NET仓储模式中,仓储类负责处理与数据存储相关的操作,例如数据的增删改查、数据的持久化和查询等。它提供了一组公共的接口和方法,供业务逻辑层调用。业务逻辑层通过调用仓储类的方法来进行数据的读写操作,而不需要关心具体的数据存储细节。

.NET仓储模式的优点包括:

  1. 解耦性:仓储模式将数据访问逻辑与业务逻辑分离,使得它们可以独立开发、测试和维护,降低了代码的耦合度。

  2. 可测试性:由于仓储模式将数据访问逻辑封装在一个单独的类中,业务逻辑层可以通过模拟仓储类的行为进行单元测试,提高了代码的可测试性。

  3. 可扩展性:通过使用接口和抽象类,可以轻松地扩展和替换具体的数据存储技术,例如从关系型数据库切换到NoSQL数据库。

  4. 可维护性:由于仓储模式将数据访问逻辑集中在一个类中,使得对于数据访问操作的修改和维护更加方便。

总而言之,.NET仓储模式是一种将数据访问逻辑与业务逻辑分离的设计模式,通过提供一个统一的接口和方法,使得业务逻辑层可以独立于具体的数据存储技术。这种模式具有解耦性、可测试性、可扩展性和可维护性等优点。

项目架构(这里只是一个最基本的框架)

ORM

ORM选的是经典的EF Core,使用Code First的模式,Code First是EF Core的一种开发模式,它允许开发人员首先定义实体类,然后通过这些实体类来创建数据库和表结构。在Code First模式中,开发人员可以使用各种注解或Fluent API配置实体类的属性、关系和约束,EF Core会根据这些配置来生成数据库架构。

使用Code First模式,开发人员可以更加关注领域模型的设计和业务逻辑的实现,而无需过多关注数据库的细节。EF Core会自动根据实体类的定义生成对应的数据库表结构,并提供一系列的API来进行数据操作,包括增删改查等。

需要注意的是,虽然EF Core支持Code First开发模式,但也支持Database First和Model First两种开发模式。Database First是通过已存在的数据库架构生成实体类,Model First是通过可视化工具设计实体类和数据库架构。开发人员可以根据具体需求选择适合的开发模式来使用EF Core。

搭建EF

首先需要下载两个包:

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

版本最好是跟框架版本对应,避免一些未知的错误

下载完成之后,需要创建LearnDbContext类,继承DbContext,

展示实体内容:

准备完成之后,需要在Api层,对上下文进行注册,同时使用Nuget包下载Domain层的两个包,将下面的代码插入到Program.cs中

//MSSQL是连接数据库字符串
builder.Services.AddDbContext<LearnDbContext>(
    d =>
    {
        d.UseSqlServer(builder.Configuration.GetConnectionString("MSSQL"));
    });
  //连接数据库字符串,在appsettings.json中定义
  "ConnectionStrings": {
    "MSSQL": "server=**;uid=**;pwd=****;database=*****"
  },

至此,准备工作已经完成,可以测试一下EF是否能够迁移成功

迁移

在迁移的时候需要注意,将Api设置成启动项,否则会报错:

Unable to create an object of type 'ApplicationDbContext'......

然后打开程序包管理控制台,输入

Add-Migration ***(代表的是名字)

运行成功之后输入

Update-Database

出现Done的时候就代表迁移成功,可以查看数据库是否有生成

posted @   喜东东三三  阅读(579)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示