EFCore入门系列-概念及一对多Demo

一、简介

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。

EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。

二、名词解释

数据库迁移:

创建数据库实体类,然后通过映射生成数据库的表
如果修改数据库实体属性,映射对应的字段

三、操作步骤

1.创建/修改领域里的实体类
2.创建迁移文件
3.应用迁移到数据库,或生成SQL脚本

使用迁移数据库场景:开发时

使用生成SQL脚本:发布生产环境,生成数据库脚本,拿给DBA

四、简单的Demo

(1) 创建两个实体类,Province和City,对应关系:一个省市对应多个城市,一对多关系

 

City类:

    public class City
    {

        public int Id { get; set; }
        public string Name { get; set; }

        public string AreaCode { get; set; }
        public int ProvinceId { get; set; }

        public Province province { get; set; }
         
    }

 

Province类:

 public class Province
    {
        public List Cityes { get; set; }
        public Province()
        {
            Cityes = new List();
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public int Population { get; set; }
        
    }

 

(2)创建一个MyContext继承DbContext类

 public class MyContext:DbContext
    {
        public DbSet provinces { get; set; }
        public DbSet cities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=.;Database=EFCoreDemo611;User Id=sa;Password=123");
        }
    }

(3)执行迁移

在Nuget包里添加如下内容:

EFCore入门系列-概念及一对多Demo_第1张图片

 EntityFrameworkCore是引用DbContext,对数据库操作用的

 EntityFrameworkCore.SqlServer 是连接的数据驱动,可以换成mysql等,数据驱动可以参考官网

https://docs.microsoft.com/zh-cn/ef/core/providers/?tabs=dotnet-core-cli

EntityFrameworkCore.Tools是操作工具

 

打开控制台:工具--->NuGet包管理器----->程序包管理控制台

EFCore入门系列-概念及一对多Demo_第2张图片

 

可以查看数据库操作命令,输入:get-help entityframeworkcore

EFCore入门系列-概念及一对多Demo_第3张图片

常用的红色的标注上了:Add-Migration新增或者修改数据迁移             Update-Database更新到数据库中

 

输入Add-Migration新增迁移可能会出现这个问题

EFCore入门系列-概念及一对多Demo_第4张图片

原因没有设置启动项,在包含DbContext里的类库中设置为启动项

更新到数据库中:输入Update-Database命令

EFCore入门系列-概念及一对多Demo_第5张图片

 

项目中会生成迁移文件

 

数据库对应生成的表:

EFCore入门系列-概念及一对多Demo_第6张图片

 

第一个入门Demo完成

你可能感兴趣的:(EFCore入门系列-概念及一对多Demo)