您的位置:首页 > 编程语言 > ASP

【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层的实现

2020-06-09 22:20 956 查看
# 0. 前言 通过前两篇,我们创建了一个项目,并规定了一个基本的数据层访问接口。这一篇,我们将以EF Core为例演示一下数据层访问接口如何实现,以及实现中需要注意的地方。 # 1. 添加EF Core 先在数据层实现层引入 EF Core: ```bash cd Domain.Implements dotnet add package Microsoft.EntityFrameworkCore ``` 当前项目以SqlLite为例,所以再添加一个SqlLite数据库驱动: ```bash dotnet add package Microsoft.EntityFrameworkCore.SQLite ``` 删除 Domain.Implements 里默认的Class1.cs 文件,然后添加Insfrastructure目录,创建一个 DefaultContext: ```c# using Microsoft.EntityFrameworkCore; namespace Domain.Implements.Insfrastructure { public class DefaultContext : DbContext { private string ConnectStr { get; } public DefaultContext(string connectStr) { ConnectStr = connectStr; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite(ConnectStr);//如果需要别的数据库,在这里进行修改 } } } ``` # 2. EF Core 批量加载模型 通常情况下,在使用ORM的时候,我们不希望过度的使用特性来标注实体类。因为如果后期需要变更ORM或者出现其他变动的时候,使用特性来标注实体类的话,会导致迁移变得复杂。而且大部分ORM框架的特性都依赖于框架本身,并非是统一的特性结构,这样就会造成一个后果:本来应该是对调用方隐藏的实现就会被公开,而且在项目引用关系中容易出现循环引用。 所以,我在开发中会寻找是否支持配置类,如果使用配置类或者在ORM框架中设置映射关系,那么就可以保证数据层的纯净,也能实现对调用方隐藏实现。 EF Core的配置类我们在《C# 数据访问系列》中关于EF的文章中介绍过,这里就不做过多介绍了(没来得及看的小伙伴们不着急,后续会有一个简单版的介绍)。 通常情况下,配置类我也会放在Domain.Implements项目中。现在我给大家介绍一下如何快速批量加载配置类: ```c# protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetAssembly(this.GetType()), t => t.GetInterfaces().Any(i => t.Name.Contains("IEntityTypeConfiguration"))); } ``` 现在版本的EF Core支持通过Assembly加载配置类,可以指定加载当前上下文类所在的Assembly,然后筛选实现接口中包含IEntityTypeConfiguration的类即可。 # 3. 使用EF Core实现数据操作 我们已经创建好了一个EF Context,那么现在就带领大家一起看一下,如何使用EF来实现 上一篇《「asp.net core」7 实战之 数据访问层定义》中介绍的数据访问接口: 新建一个BaseRepository类,在Domain.Implements项目的Insfrastructure 目录下: ```c# using Domain.Infrastructure; using Microsoft.EntityFrameworkCore; namespace Domain.Implements.Insfrastructure { public abstract class BaseRepository
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐