zoukankan      html  css  js  c++  java
  • 1、Entity Framework Core 3.1入门教程-概述和准备工作

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解。
    视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR
    GitHub源码:https://github.com/hllive/LearnEFCore3.1

    Entity Framework Core就是一个ORM,什么是ORM?Entity Framework Core能把C#里的类映射到数据库里的表,然后属性就映射到字段上。
    Entity Framework Core 3.1 是微软长期支持版本,3.1是一个长期支持的版本,而且从EFcore3.0开始是向后开辟了一个新时代。因为3.0和2.0之间的差异还是比较大,所以学3.1是一个比较好的选择。在2020年底NET5出来之后,也应该出来一个相应的版本,但是跟这个3.1差别应该不会太大。
    首先建三个Model或在数据库中建三张表。
    假如是一个足球联赛,其包括:League(联赛),Club(足球队、俱乐部),Player(运动员) 三个都是一对多的关系

    1、创建项目

    • 1、打开Visual Studio 2019-->创建新项目-->选择【空白解决方案】-->输入解决方案名称-->创建完成
    • 2、创建类库:选择解决方案右击-->添加-->新建项目-->选择【类库(.NET Standard)】[图1]也可以选择【类库(.NET Core)】-->最后给类库起名为Models
    • 3、再创建一个类库,起名为Data
    • 4、再创建一个【ASP.NET Core Web应用程序】[图2],起名为WebApi,创建web应用程序选择API[图3]



      5、最后的项目结构

    2、添加Model

    在Models项目中添加三个Model :League(联赛),Club(足球队、俱乐部),Player(运动员)。
    建好三个模型后,在Data类库引用Models类库

    // 联赛
    public class League
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public string Country { get; set; }//国家
    }
    
    //运动员
    public class Player
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public DateTime Birth { get; set; }
    }
    
    //足球队
    public class Club
    {
        public Club()
        {
            Players = new List<Player>();//为了以后使用不会遇到空引用
        }
        public Guid Id { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public DateTime DateOfEstablishment { get; set; }//成立日期
        public string History { get; set; }//历史成绩
        public League League { get; set; }//联赛
        public List<Player> Players { get; set; }//运动员列表
    }
    

    3、安装Entity Framework Core相关包

    在Data类库中通过NuGit安装两个包

    • 1、Microsoft.EntityFrameworkCore.SqlServer
    • 2、Microsoft.EntityFrameworkCore.Tools

    Microsoft.EntityFrameworkCore.Tools包中会包含Microsoft.EntityFrameworkCore.Design包

    • 在Data类库中引用Models类库
    • 在WebApi应用程序中引用Data类库(不用引用Models类库也同样能使用Models下的类,因为Data类库已经引用了Models类库,它们有级联依赖关系)

    4、映射数据库

    将Model映射到数据库里,首先要建立一个AppDbContext类,在Data类库中;这个类需要继承DbContext。
    AppDBcontext中包括包含了所有逻辑,比如与数据库交互、数据变化追踪等
    为让三个Model能在Context中正常工作,将三个Model暴露成DbSet类型

    public class AppDbContext : DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options)
            : base(options) { }
        public DbSet<League> Leagues { get; set; }
        public DbSet<Club> Clubs { get; set; }
        public DbSet<Player> Players { get; set; }
    }
    

    三个Model写好后,还需要将类映射到数据中,也就是映射数据库的三个表,与数据库连接就需要数据库连接字符串
    在WebApi应用程序中的appsettings.json文件中添加如下配置:

    "ConnectionStrings": {
      "DefaultConnection": "Server=(localdb)\MSSQLLocalDB;Database=EFCoreDb;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
    

    在Startup类的ConfigureServices方法下注入数据库上下文依赖

    services.AddDbContext<AppDbContext>(optionsAction => 
          optionsAction.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    

    博客文章可以转载,但不可以声明为原创

  • 相关阅读:
    tp5 查询问题 字段自增 字段比较
    七牛云 {"error":"no such domain"}
    mac 命令
    跟微信公众号一起来学api安全
    vue 运行别人项目
    php sha1withrsa
    thinkphp5 使用路由下分页 form表单 搜索
    P2134 百日旅行 (斜率优化,DP)
    [USACO Section 4.4]追查坏牛奶Pollutant Control (最小割)
    [HAOI2007] 理想的正方形 (单调队列)
  • 原文地址:https://www.cnblogs.com/hllive/p/13539320.html
Copyright © 2011-2022 走看看