5、使用DB first创建数据库并使用Migration进行迁移


1、项目WebApp_DEMO添加数据上下文

     在Repository文件夹中添加DemoDbContext类,继承DbContext,添加引用:using Microsoft.EntityFrameworkCore;

     将实体类Login添加到Dbset,添加引用:using WebApp_DEMO.Models;

using Microsoft.EntityFrameworkCore;
using WebApp_DEMO.Models;

namespace WebApp_DEMO.Repository
{
    public class DemoDbContext: DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(@"server=127.0.0.1;database=WebApp_DEMO;uid=sa;pwd=1234");
        }
        /// 
        /// 实体类添加到DbSet
        /// 
        public DbSet Logins { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity().ToTable("Login");
        }
    }
}
数据上下文

2、注入服务

在Program.cs中注入DemoDbContext,添加引用:

builder.Services.AddDbContext();

 3、创建数据库配置Migration

在程序包管理器控制台中

PM> add-migration init

初始化成功后,控制台返回“Build succeeded”信息。同时,项目中生成一个Migrations文件夹,里面是迁移记录。

其中:xxx_init.cs是主迁移文件,包含应用迁移所需的操作 Up() 和还原迁移所需的操作Down()

xxx_init.Designe.cs迁移元数据文件。 包含 EF 所用的信息,如给实体类型构建属性、主键、外键、索引、映射到数据表,主体和依赖关系等等。

PM> update-database

数据库创建成功后,控制台返回“Done.”信息

查看数据库,已经生成数据库和数据表

常见错误及解决:

错误:ScriptHalted。解决:PowerShell版本低,在官网下载对应版本,网址:https://www.microsoft.com/en-us/download/details.aspx?id=54616

错误:Your startup project 'WebApp_DEMO' doesn't reference Microsoft.EntityFrameworkCore.Design.解决:缺少NuGet包,在在该项目中安装:Install-Package Microsoft.EntityFrameworkCore.Tools

错误:对象'PK_xxx' 依赖于 列'xxx'。由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN xxx 失败。解决:sqlserve中直接删除箭的约束,或使用语句alter table TableName drop constraint PK_xxx

4、Code First 数据注释

使用 DataAnnotations,可以将 Code First 类映射到预先存在的数据库

[Key]
[Required]
[StringLength(50)]
[Display(Name = "First Name")]
[Column("FirstName")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]

参考:https://blog.csdn.net/qq_39569480/article/details/114319127

项目地址:https://files.cnblogs.com/files/shiliumu/App_P5.rar?t=1649840339