netcore 入门之EF框架使用

安装nugut包

Microsoft.EntityFrameworkCore.SqlServer
连接对应数据库的package,本次是连接sqlserver数据库
Microsoft.EntityFrameworkCore.Tools
用于实体与数据库的相互映射

CodeFirst(基础版)

新建上下文类(继承于DbContext)

1.生成空构造函数
此处我们一般用不到,但是必须写

        /// <summary>
        /// 必须要有空构造函数,不然不能执行
        /// </summary>
        public EFCoreDemoContext()
        {

        }

2.生成构造函数并执行父类构造函数
此处即将应用程序的配置信息传递给DbContext(通过泛型),对DbContextOptions进行实例化

        /// <summary>
        /// 使用构造函数,并执行父类构造
        /// </summary>
        /// <param name="options"></param>
        public EFCoreDemoContext(DbContextOptions<EFCoreDemoContext> options):base(options)
        {

        }

3.对需要使用的每个实体添加DbSet<TEntity>属性(TEntity为泛型)
在这里插入图片描述
使用DbSet<Student>属性,Students来查询和保存类文件Student的实例
当对DbSet采用LINQ查询的时候,会自动转换为SQL语句对基础数据库做查询操作

4.绑定数据库连接

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            => optionsBuilder.UseSqlServer("server=127.0.0.1;Database=TestDatabase;uid=sa;password=sa");

5.值得注意的是,这里有一个非常常用的方法OnModelCreating,有兴趣的可以查一下

        /// <summary>
        /// 此处可以更新展示的表名
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }

依赖注入

将写好的上下文文件依赖注入到IservicesCollection中

services.AddScoped<EFCoreDemoContext>();

新增映射

Microsoft.EntityFrameworkCore.Tools安装的效果便在此处展现

程序包管理控制台

1.add-migration 添加迁移 只会会提示新增的迁移文件夹名称

执行该指令后,会在项目文件夹下新增Migration文件夹

在这里插入图片描述
2.update-database 更新本地模型代码到数据库
在这里插入图片描述

异常:
在这里插入图片描述
没有将对应项目设定会起始项目,右键对应项目选“设定为起始项目”即可

在这里插入图片描述
这里提示的是,你写的数据库连接字符串有问题,检查一下

DBFirst

程序包管理控制台

Scaffold-DbContext "{Your DB connect string}" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

作用是生成数据库Mapping,我的就是Scaffold-DbContext “Data Source=127.0.0.1;Database=TestDatabase;uid=sa;password=sa” Microsoft.EntityFrameworkCore.Sqlserver -outputdir Enitites

  • {Your DB connect string}:你的数据库连接字符串
  • Microsoft.EntityFrameworkCore.SqlServer:目标数据库为Sql Server
  • -OutputDir Models: 生成的文件的存放目录,目前目录是根目录下的Models目录

还有其他参数

  • -Context 指定DbContext生成类的名称
  • -Tables 指定要为其生成类的表
  • -Force强制脚手架覆盖现有文件 ,否则只在没有输出的文件没有覆盖的情况下,代码才会继续

升级版

在使用Dbfirst的时候,我们会发现一个warning
在这里插入图片描述
此处就是在提示,生成的context类文件中的数据库连接写在了代码上,这是一个隐藏的危险。所以一般会将数据库连接语句写在appseeting.json文件中

此处继续Codefirst的操作,将数据库连接语句迁移到json文件

上下文类

1.移除空构造函数

也就是把空构造函数舍弃

2.移除OnConfiguring(此处配置数据库连接)

数据库连接池的配置

1.appsettings.json文件配置

  "ConnectionStrings": {
    "StudentDBConection": "server=(local)\\MSSQLLocalDB;database:StudentDB,Trusted_Connection=true"

需要注意的是,此处ConnectionStrings不能写错

2.注入中间件(ConfigureService)
将原来的services.AddScoped();替换为DbContextPool注入

            //services.AddScoped<EFCoreDemoContext>();
            services.AddDbContextPool<EFCoreDemoContext>(options =>
            {
                options.UseSqlServer(_configuration.GetConnectionString("StudentDBConection"));
            });

注意,此处如果使用_configuration进行获取配置文件信息,需要在Startup.cs新增一个构造函数

using Microsoft.Extensions.Configuration;
        private readonly IConfiguration _configuration;
        public Startup(IConfiguration configuration)
        {
            _configuration = configuration;
        }

此处,即成功将配置文件放入到json文件中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值