EFcore

一、什么是EFcore

需要引用的包

 

 

二、Core First

步骤

models文件夹中添加实体类和context数据库上下文实现DbContext接口,并且创建构造函数

 public class ShopContext : DbContext
    {
        private readonly IConfiguration _configuration;
 
        public ShopContext(DbContextOptions<ShopContext> options,IConfiguration configuration) : base(options)
        {
            _configuration = configuration;
        }
 
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            //以下两种方式都是正确的
            //optionsBuilder.UseSqlServer(_configuration.GetConnectionString("ShopContext"));
            optionsBuilder.UseSqlServer("server=.;database=ShopDB;uid=sa;password=123456");
        }
 
 
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //添加种子数据
 
            //modelBuilder.Entity<Student>().HasData(
               // new Student {ID=1, Name="小向" }
              //  );
                //添加种子数据
                modelBuilder.Seed();//这个seed方法为ModelBuilder扩展方法,这样做的话可以使我们更好的管理数据。
 
        }
        public virtual DbSet<Product> Products { get; set; }
        public virtual DbSet<Cate> Cates { get; set; }
    }

新建一个ModelBuilderExtensions类放扩展类方法

以上两步完成后在工具=====nuget包管理器的控制台管理中

 

输入命令创建迁移文件:(当更变了字段和修改的一些初始化信息,那么就要重新执行下面两个命令)

(1)Add-Migration 迁移文件名称(自己起一个名称)例如:Add-Migration initmigration

(2)Update-Database :更新数据库

注意以后实体类更改了字段,也可以通过迁移命令更改数据库。

 

三、DB First

步骤

 

1.最后在appsettings.json中添加连接字符串,写法如下:

//这个不能变

"ConnectionStrings": {

//名称自己起的

    "ShopContext": "Data Source=.;Initial Catalog=数据库名称;User ID=sa;Password=123456"

  }

2. 直接在工具=====nuget包管理器的控制台管理中输入以下命令

使用sa登录方式:

Scaffold-DbContext "Data Source=.;Initial Catalog=数据库名称;User ID=sa;Password=123456"

Microsoft.EntityFrameworkCore.SqlServer -OutPutDir Models -Context ShopContext

 

使用windows登录方式:

Scaffold-DbContext "Data Source=.;Initial Catalog=数据库名称;Integrated Security=True"

Microsoft.EntityFrameworkCore.SqlServer -OutPutDir Models -Context ShopContext

 

 

四、数据库连接字符串

五、其他

1.当需要删除一个表字段时,但该字段已经运用到数据库中,那删除时,需要执行updata-database(删除的迁移数据的前一个迁移数据名称【名称为_后面的名称】)进行数据的回滚,可以使用自动生成的_EFMigrationsHistory(用于跟踪应用于数据库的迁移记录信息)表对应相应的迁移数据进行回滚和删除操作。

2.如果创建的是一个空的项目,创建控制器和视图时需要自己创建一个Controllers文件夹用于放控制器,创建view放对应的视图文件,创建完毕之后,需要去startupconfigure方法中设置路由。如图:

3.core first 主外键写法(引用using System.ComponentModel.DataAnnotations;来做相应的约束)

主键(外键添加之后,须在主键表中添加一个导航属性)

外键

原文地址:https://www.cnblogs.com/LanHai12/p/15258104.html