站点图标 江湖人士

从控制台程序开始认识Entity Framework Core

从控制台程序开始认识Entity Framework Core
本篇文章,江湖人士将带您学习如何逐步使用Entity Framework Core和使用代码先行(Code-First)来编写一个控制台程序。在开始之前,请将你的开发工具升级到Visual Studio 17(或更高版本)创建.NET Core Console应用程序。 .net core迁移示例源码 (下载807 )

可以使用Visual Studio 2017或.NET Core的命令行界面(CLI)创建.NET Core Console应用程序。在这里,我们将使用Visual Studio 2017。

要创建.NET Core Console应用程序,请打开Visual Studio 2017并在菜单上选择:文件- > 新建 – > 项目 ..这将打开New Project弹出窗口,如下所示。

新建.net core 控制台程序

在新建项目弹出窗口中,展开左窗格中的 Visual C# – > .NET Core,然后在中间窗格中选择控制台应用程序(.NET Core)模板。输入项目名称和位置,然后单击确定按钮以创建控制台应用程序,如下所示。

控制台程序主界面

现在,我们需要使用Package Manager Console在我们的控制台应用程序中安装EF Core。在菜单上选择:工具 – > NuGet包管理器 – >包管理器控制台并执行以下命令以安装SQL Server提供程序包:

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer

在这里你可以了解有关在EF Core安装章节中安装EF Core的更多信息。

安装 EF Core
安装 EntityframeworkCore

编写实体(对应数据库表)

Entity Framework Core 需要具有与数据库通信的模型(实体数据模型)。EF Core使用Data Annotations和Fluent API两种方式来建立数据库的关系,如主键,外键,约束,索引等,所有和数据库有关的一切,都可以通过这哥俩来配置。

EF模型包括三个部分:概念模型,存储模型以及概念模型和存储模型之间的映射。在代码优先方法中,EF基于您的域类(实体类),上下文类和配置构建概念模型。EF Core根据您使用的提供程序构建存储模型和映射。例如,与DB2相比,SQL Server的存储模型将有所不同。

EF将此模型用于对底层数据库的CRUD(创建,读取,更新,删除)操作。

因此,我们需要首先创建实体类和上下文类。以下是学生和课程的简单实体课程:

public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
}

public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }
}

现在,我们需要通过派生来创建一个上下文类DbContext,如上一章所示。以下SchoolContext类也称为上下文类。

public class SchoolContext : DbContext
    {
        public DbSet<Student> Students { get; set; }
        public DbSet<Course> Courses { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        { 
            optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;");
        }
    }

上面的上下文类包括两个DbSet<TEntity>属性,for StudentCourse两个实体它们将映射到底层数据库中的StudentsCourses表。在该OnConfiguring()方法中,实例DbContextOptionsBuilder用于指定要使用的数据库。我们已经安装了MS SQL Server提供,其中加入了扩展方法UseSqlServerDbContextOptionsBuilder

连接字符串"Data Source=.;Integrated Security=True.Database=SchoolDB;Trusted_Connection=True;"UseSqlServer方法提供数据库信息:Server=指定数据库服务器使用,Database=指定要创建的数据库名称,Trusted_Connection=True指定Windows身份验证模式。在运行迁移时,EF Core将使用此连接字符串创建数据库。

在创建上下文和实体类之后,是时候添加迁移来创建数据库了。

迁移数据库

EF Core包含不同的迁移命令,可根据模型创建或更新数据库。此时,没有SchoolDB数据库。因此,我们需要通过添加迁移从模型(实体和上下文)创建数据库。

我们可以使用NuGet包管理器以及dotnet CLI(命令行界面)执行迁移命令。

在Visual Studio中,从Tools – > NuGet 包管理器 – > 程序包管理器控制台 打开NuGet Package Manager控制台,然后输入以下命令:

Add-Migration first -context SchoolContext
输入迁移命令,回车执行迁移

执行上面这个命令时,如果出现如下错误提示:

Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

意味着我们还需要通过NuGet程序包管理器控制台安装两个包,这两个包安装完毕后就可以正常进行迁移了。命令如下:

install-package Microsoft.EntityFrameworkCore.Design
install-package Microsoft.EntityFrameworkCore.Design
install-package Microsoft.EntityFrameworkCore.Tools
install-package Microsoft.EntityFrameworkCore.Tools

完成以上步骤后,我们再执行迁移命令成功后会出在当前工程出现一个名叫:Migrations的目录,如下图所示:

迁移成功后增加的目录。

如果使用dotnet CLI,请输入以下命令。

dotnet ef migrations add CreateSchoolDB

创建迁移后,我们仍然需要使用update-databasePackage Manager控制台中的命令创建数据库,如下所示。

update-database -verbose

在dotnet CLI中输入以下命令。

dotnet ef database update

这将创建具有UseSqlServer()方法中连接字符串中指定的名称和位置的数据库。它为每个DbSet属性(StudentsCourses)创建一个表,如下所示。

这是第一次创建数据库的迁移。现在,每当我们添加或更新域类或配置时,我们都需要使用add-migrationupdate-database命令将数据库与模型同步。

读取或写入数据

现在,我们可以使用上下文类来保存和检索数据,如下所示。

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new SchoolContext()) {

                var std = new Student()
                {
                     Name = "Bill"
                };

                context.Students.Add(std);
                context.SaveChanges();
            }
        }
    }
}

因此,您需要执行这些步骤以在应用程序中使用Entity Framework Core。访问保存数据和查询章节,以了解有关在EF Core中保存和检索数据的更多信息。

本文示例源下载: .net core迁移示例源码 (下载153 )

退出移动版