EF Core 入门Getting Started with EF Core
在本教程中,将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 SQLite 数据库执行数据访问。
你可在 Windows 上使用 Visual Studio,或在 Windows、macOS 或 Linux 上使用 .NET Core CLI 来学习本教程。
先决条件Prerequisites
安装以下软件:
- .NET Core CLI
对于此工作负载,建议采用 Visual Studio 2019 版本 16.3 或更高版本:
- “.NET Core 跨平台开发”(位于“其他工具集”下)
创建新项目Create a new project
dotnet new console -o EFGetStarted
cd EFGetStarted
- 打开 Visual Studio
- 单击“创建新项目”
- 选择带有 C# 标记的“控制台应用 (.NET Core)” ,然后单击“下一步”
- 输入“EFGetStarted”作为名称,然后单击“创建”
安装 Entity Framework CoreInstall Entity Framework Core
要安装 EF Core,请为要作为目标对象的 EF Core 数据库提供程序安装程序包。 本教程使用 SQLite 的原因是,它可在 .NET Core 支持的所有平台上运行。 有关可用提供程序的列表,请参阅数据库提供程序。
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
“工具”>“NuGet 包管理器”>“包管理器控制台”
运行以下命令:
Install-Package Microsoft.EntityFrameworkCore.Sqlite
提示:还可以通过右键单击项目并选择“管理 NuGet 程序包”来安装包
创建模型Create the model
定义构成模型的上下文类和实体类。
- .NET Core CLI
在项目文件夹中,使用以下代码创建 Model.cs
右键单击项目,然后选择“添加”>“类”
- 输入“Model.cs”作为名称,然后单击“添加”
- 将此文件的内容替换为以下代码
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace EFGetStarted
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data Source=blogging.db");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; } = new List<Post>();
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
EF Core 还可以从现有数据库对模型进行反向工程。
提示:为清楚起见,有意简化了此应用程序。 连接字符串不应存储在生产应用程序的代码中。 可能还需要将每个 C# 类拆分为其自己的文件。
创建数据库Create the database
以下步骤使用迁移创建数据库。
- .NET Core CLI
运行以下命令:
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update
这会安装 dotnet ef 和设计包,这是对项目运行命令所必需的。
migrations
命令为迁移搭建基架,以便为模型创建一组初始表。database update
命令创建数据库并向其应用新的迁移。
在“包管理器控制台”中运行以下命令
Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration InitialCreate
Update-Database
这会安装 EF Core 的 PMC 工具。
Add-Migration
命令为迁移搭建基架,以便为模型创建一组初始表。Update-Database
命令创建数据库并向其应用新的迁移。
创建、读取、更新和删除Create, read, update & delete
打开 Program.cs 并将内容替换为以下代码:
using System;
using System.Linq;
namespace EFGetStarted
{
class Program
{
static void Main()
{
using (var db = new BloggingContext())
{
// Create
Console.WriteLine("Inserting a new blog");
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();
// Update
Console.WriteLine("Updating the blog and adding a post");
blog.Url = "https://devblogs.microsoft.com/dotnet";
blog.Posts.Add(
new Post
{
Title = "Hello World",
Content = "I wrote an app using EF Core!"
});
db.SaveChanges();
// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();
}
}
}
}
运行应用Run the app
dotnet run
运行 .NET Core 控制台应用时,Visual Studio 使用不一致的工作目录。 (请参阅 dotnet/project-system#3619)这会导致引发异常:无此类表格:博客。 更新工作目录:
右键单击项目,并选择“编辑项目文件”
在 TargetFramework 属性下方,添加以下内容:
<StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory>
保存该文件
现在可以运行应用:
- “调试”>“开始执行(不调试)”
后续步骤Next steps
- 按照 ASP.NET Core 教程在 Web 应用中使用 EF Core
- 了解有关 LINQ 查询表达式的详细信息
- 配置模型指定必需项和最大长度等内容
- 在更改模型后使用迁移来更新数据库架构