EF core连接数据库的前期完整配置流程-开发环境搭建

CodeFris类型

EF core连接数据库完整流程-开发环境搭建

前置:.net6 控制台不勾选任何配置

声明:这里是以两个配置类来做的,一个T_Books表,一个T_Person表,注意每个地方的命名

Book:创建属性及类型

BookConfig:对创建的进行属性数据表的配置,及数据类型控制(相当于在数据库建表的过程

MyDbContext:与数据库相连接,操作数据库(实现表的建立

程序包管理控制台执行语句:

Add-Migration Init

Update-Database

Remove-Migration

Add-Migration AddBrith

Add-Migration 添加新的迁移。
Drop-Database 删除数据库。
Get-DbContext 获取 DbContext 类型的相关信息。
Remove-Migration 删除最后一次迁移。
Scaffold-DbContext 为数据库构建 DbContext 和实体类型。
Script-Migration 从迁移中生成SQL脚本。
Update-Database 根据指定的迁移更新数据库。

前置条件需要会sql语句,C#,以及SQLserver数据库

  •  代码布局 

Microsoft.EntityFrameworkCore 

1.建实体类

Book实体类

namespace WebApplication13
{
    public class Book
    {
        public long Id { get; set; }
        public string Title { get; set; }
        public DateTime PubTime { get; set; }
        public double Price { get; set; }
    }
}

Person实体类

namespace WebApplication13
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

为项目安装依赖包(nuget):Microsoft.EntityFrameworkCore.SqlServer


2.建配置类

Book配置类

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace WebApplication13
{
    //作用:按照代码建数据库类,对应那一个表对应
    public class BookConfig:IEntityTypeConfiguration<Book>//接口
    {
        public void Configure(EntityTypeBuilder<Book> builder)
        {
            builder.ToTable("T_Books");
        }
    }
}

Person配置类

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace WebApplication13
{
    public class PersonConfig : IEntityTypeConfiguration<Person>
    {
        public void Configure(EntityTypeBuilder<Person> builder)
        {
            builder.ToTable("T_Persons");
        }
    }
}

Context配置类:与数据库产生联系

MyDbContext:连接数据库及加载前面的配置

using Microsoft.EntityFrameworkCore;

namespace WebApplication13
{
    public class MyDbContext:DbContext
    {
        public DbSet<Book> Books { get; set; }
        public DbSet<Person> Persons { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer("Server=.; Database=Todo; uid = sa; pwd = 123456; Trusted_Connection = False;");//连接字符串
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //从指定的程序集里面加载IEntityTypeConfiguration内容this.GetType()
            base.OnModelCreating(modelBuilder);
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }
}

3.生成数据库

工具根据配置的实体类来生成数据库,多步生成,可以回滚

需要安装:

Microsoft.EntityFrameworkCore.Tools

未安装成功执行下面的命令会报这个错误

执行:Add-Migration Init

作用:Add-Migration生成一次迁移(根据代码生成一次数据库表)

执行:Update-Database

作用:将生成的表同步到数据库

3.1追加属性

执行:Add-Migration AddBrith

可以查看追加的内容

执行:Update-Database

同步更新

4.设置表字段的属性

字段的数据类型改变,可能会导致数据库里已有的数据截断

拓展:

不建立配置类实现实体-数据库表

提示:关闭再打开才能看见新的变化

总结

日常开发的时候建实体类-配置-DbContext-Add-Migration AddBrith-Update Database 哦了

完整代码地址:https://gitee.com/bigcat_li/EFcore

错误收集

Add-Migration MyMigration -context MyDbContext

2.关于执行update的时候提示数据库中已经存在T_User问题

我没解决,我选择删除数据库

别人的解决办法,我尝试了一下对我来说没用:

Abp 项目报错 Microsoft.Data.SqlClient.SqlException (0x80131904)_abp 查询表错误-CSDN博客 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值