关于对Entity Framework Core3.1的理解与总结

Posted hcyesdo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于对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参数

以上是关于关于对Entity Framework Core3.1的理解与总结的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Extended Library (EF扩展类库,支持批量更新删除合并多个查询等)

Entity Framework 可以按相关实体上的属性对实体进行排序吗?

Entity Framework 和 DateTime 的毫秒精度比较

Entity Framework 的 SQL 运算符函数对 SQL 注入安全吗?

ASP.NET Core3.0+EntityFrameWork Core3.0更新后的一个关于GroupBy的坑

Entity Framework Core 中的动态变化模式