zoukankan      html  css  js  c++  java
  • 关于对Entity Framework Core3.1的理解与总结

    Entity Framework Core 是一个ORM,所谓ORM也是ef的一个框架之一吧,简单的说就是把C#一个类,映射到数据库的一个表,把类里面的属性映射到表中的字段。然后Entity Framework Core3.1 是一个长期支持的版本。本人非常乐意对.NET社区繁荣奉献自己的青春。希望国内以后能够有越来越多的.NET程序员。

    创建了一个.NET Standard类库。

    可以编辑文件查看netStandard版本号,我这里是一个2.0版本。

    顺便简单的说一下netStandard吧,实际上它应该就是一个开源库,不管是.NET Core还是EntityFramework都可以引用它。就是一个底层类库,并且该类库可以在不同的平台运行,ios、mac、linux等。一处编写多处运行,而且它还是开源的。当然这里你可以把它改成2.1的版本。

     右键项目属性

    这样就该好了。。。

    然后又创建了一个类库,操作和上面一样,另一个是创建一个控制台应用,这个控制台应用是.NET Core应用的,版本应该是netcoreapp3.1,可以看看

    以上准备工作完成后,就开始进行第一步操作,生成数据库!

    在Demo.Main类库中创建所需要的类

    这里我就简单的举个栗子。一个联赛类,一个是俱乐部类,一个是球员类,分别是一对多的关系。

    namespace Demo.Main
    {
        /// <summary>
        /// 联赛
        /// </summary>
        public class League
        {
            public int  Id { get; set; }
            public string Name { get; set; }
            public string Country { get; set; }
        }
    }
    using System;
    using System.Collections.Generic;
    
    namespace Demo.Main
    {
        /// <summary>
        /// 俱乐部
        /// </summary>
        public class Club
        {
            public Club()
            {
                Players=new List<Player>();//以防出现空指针引用
            }
            public int Id { get; set; }
            public string Name { get; set; }
            public string City { get; set; }
            /// <summary>
            /// 俱乐部成立日期
            /// </summary>
            public DateTime Establishment { get; set; }
            public string History { get; set; }
            /// <summary>
            /// 联赛导航属性
            /// </summary>
            public League League { get; set; }
            /// <summary>
            /// 一对多,一个俱乐部有多个球员
            /// </summary>
            public List<Player> Players { get; set; }
        }
    }
    using System;
    
    namespace Demo.Main
    {
        /// <summary>
        /// 球员
        /// </summary>
        public class Player
        {
            public int Id { get; set; }
            public string Name { get; set; }
            /// <summary>
            /// 球员出生日期
            /// </summary>
            public DateTime DateOfBirth { get; set; }
        }
    }

    然后就是在Data中引用Main的项目库

    对Data类库安装对数据库操作的相关依赖,也就是方便对Model映射到数据库。显而易见,Data类库就是操作对Model映射到数据的Code first数据库迁移操作的。

    所以必然是少不了上下文类的编写和操作了。

    接下来就是准备迁移操作了,但是对于Demo.Data类库来说它是一个底层的类库,所以我们就得通过Demo.App一个控制台应用来去生成数据库,然后就要通过NuGet包进行一个引用了。

    需要对数据库操作进行可执行文件的操作需要引用一下依赖吧可以说是

    这个就装在Demo.Data项目中

    这里就可以看到它为什么对数据库迁移起到作用了

    点击下载即可,而后才能执行数据库迁移操作

    记得在迁移时一定要选择上下文存在的类的项目也就是Data

    然后就是用命令来操作包管理工具了,来具体总结一下吧!

    你可以通过给的提示输入命令也就是get-help NuGet查看具体的一些帮助命令

    主要命令应该就是这些,具体解释可以再去看看

    或者输入get-help entityframework,结果如下,我们用到的就是Add-Migration(添加迁移)、Update-Database(更新数据库)这两个应该就是比较常用的了。

    输入第一个命令 Add-Migration 这里需要给个参数(实际上有很多参数)这个参数就是会在生成的时间戳后面定义的Name参数

  • 相关阅读:
    思源:秒级体验百亿级数据量监控钻取
    禧云Redis跨机房双向同步实践
    谈谈数据中台技术体系
    RCA:收单设备调用云端接口频繁超时排查总结
    技术上的“深淘滩,低作堰”
    企业私有源代码上传github致入侵之大疆案判决了
    那些年我们一起犯过的错
    异地双活的四个误区
    没有预见性你凭什么晋升
    中国IT史上两大严重事故对我们的警醒及预防措施
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/13160921.html
Copyright © 2011-2022 走看看