Entity Framework Core系列教程-5-第一个应用程序
第一个EF Core控制台应用程序
在这里,您将逐步学习如何将Entity Framework Core与Code-First方法结合使用。为了演示这一点,我们将使用Visual Studio 2019创建一个.NET Core Console应用程序。
可以使用Visual Studio 2019或.NET Core的命令行界面(CLI)创建.NET Core控制台应用程序。在这里,我们将使用Visual Studio 2019。
要创建.NET Core控制台应用程序,请打开Visual Studio 2019,然后在菜单上选择:文件->新建->项目。这将打开“新建项目”弹出窗口,如下所示。
在“新建项目”弹出窗口中,在左窗格中展开Installed-> Visual C#,然后在中间窗格中选择Console App(.NET Core)模板。输入项目名称和位置,然后单击确定按钮以创建控制台应用程序,如下所示。
现在,我们需要使用Package Manager Console在我们的控制台应用程序中安装EF Core。在菜单上选择:工具-> NuGet程序包管理器->程序包管理器控制台,并执行以下命令来安装SQL Server提供程序程序包:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
如何安装请参考:
EF Core安装教程
创建模型
EF Core需要具有一个模型(实体数据模型)以与基础数据库进行通信。它根据您的领域模型类成员,数据注释和Fluent API配置来构建模型。
EF模型包括三个部分:概念模型,存储模型以及概念模型和存储模型之间的映射。在Code-First方法中,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类也称为上下文类。
namespace EFCoreTutorials
{
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>属性,分别用于“学生”和“课程”类型,这些属性将映射到基础数据库中的“学生”和“课程”表。在OnConfiguring()方法中,DbContextOptionsBuilder的实例用于指定要使用的数据库。我们已经安装了MS SQL Server提供程序,该提供程序已在DbContextOptionsBuilder上添加了扩展方法UseSqlServer。
连接字符串"Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;"UseSqlServer方法中的提供数据库信息:Server =指定要使用的DB Server,Database =指定要创建的数据库的名称,Trusted_Connection = True指定Windows身份验证模式。运行迁移时,EF Core将使用此连接字符串创建数据库。
创建上下文和实体类之后,该添加迁移以创建数据库了。
添加迁移
EF Core包含不同的迁移命令,用于基于模型创建或更新数据库。此时,尚无SchoolDB数据库。因此,我们需要通过添加迁移从模型(实体和上下文)创建数据库。
我们可以使用NuGet软件包管理器控制台以及dotnet CLI(命令行界面)执行迁移命令。
在Visual Studio中,从工具-> NuGet软件包管理器->软件包管理器控制台中打开NuGet软件包管理器控制台,然后输入以下命令:
add-migration CreateSchoolDB
如果使用dotnet CLI,请输入以下命令:
dotnet ef migrations add CreateSchoolDB
这将在项目中创建一个名为Migrations的新文件夹,并创建ModelSnapshot文件,如下所示:
在“迁移”一章中了解有关它的更多信息。
创建迁移后,我们仍然需要使用Package Manager控制台中的update-database命令创建数据库,如下所示。
update-database –verbose
在dotnet CLI中输入以下命令:
dotnet ef database update
这将使用UseSqlServer()方法中的连接字符串中指定的名称和位置创建数据库。它将为每个DbSet属性(学生和课程)创建一个表,如下所示。
这是第一次创建数据库的迁移。现在,无论何时添加或更新域类或配置,我们都需要使用add-migration和update-database命令将数据库与模型同步。
读取或写入数据
现在,我们可以使用上下文类来保存和检索数据,如下所示:
namespace EFCoreTutorials
{
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中保存和检索数据的更多信息。