可以使用Visual Studio 2017或.NET Core的命令行界面(CLI)创建.NET Core Console应用程序。在这里,我们将使用Visual Studio 2017。
要创建.NET Core Console应用程序,请打开Visual Studio 2017并在菜单上选择:文件- > 新建 – > 项目 ..这将打开New Project弹出窗口,如下所示。
在新建项目弹出窗口中,展开左窗格中的 Visual C# – > .NET Core,然后在中间窗格中选择控制台应用程序(.NET Core)模板。输入项目名称和位置,然后单击确定按钮以创建控制台应用程序,如下所示。
现在,我们需要使用Package Manager Console在我们的控制台应用程序中安装EF Core。在菜单上选择:工具 – > NuGet包管理器 – >包管理器控制台并执行以下命令以安装SQL Server提供程序包:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer
在这里你可以了解有关在EF Core安装章节中安装EF Core的更多信息。
编写实体(对应数据库表)
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 Student
和Course两个实体
它们将映射到底层数据库中的Students
和Courses
表。在该OnConfiguring()
方法中,实例DbContextOptionsBuilder
用于指定要使用的数据库。我们已经安装了MS SQL Server提供,其中加入了扩展方法UseSqlServer
上DbContextOptionsBuilder
。
连接字符串"
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.Tools
完成以上步骤后,我们再执行迁移命令成功后会出在当前工程出现一个名叫:Migrations的目录,如下图所示:
如果使用dotnet CLI,请输入以下命令。
dotnet ef migrations add CreateSchoolDB
创建迁移后,我们仍然需要使用update-database
Package Manager控制台中的命令创建数据库,如下所示。
update-database -verbose
在dotnet CLI中输入以下命令。
dotnet ef database update
这将创建具有UseSqlServer()
方法中连接字符串中指定的名称和位置的数据库。它为每个DbSet
属性(Students
和Courses
)创建一个表,如下所示。
这是第一次创建数据库的迁移。现在,每当我们添加或更新域类或配置时,我们都需要使用add-migration和update-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 )