江苏省建设执业网站,个人做淘宝客网站有哪些,网站主题有哪些内容,wordpress怎么更换站点文章目录 Code FirstDatabase FirstCode First 示例安装 Entity Framework Core创建模型创建数据库创建、读取、更新和删除 Database First 示例1. 使用Scaffold-DbContext命令生成代码#xff08;通常在Package Manager Console中执行#xff09;2. 生成的代码类似于Code Fi… 文章目录 Code FirstDatabase FirstCode First 示例安装 Entity Framework Core创建模型创建数据库创建、读取、更新和删除 Database First 示例1. 使用Scaffold-DbContext命令生成代码通常在Package Manager Console中执行2. 生成的代码类似于Code First中的实体类和DbContext但它们是基于现有数据库的。3. 使用生成的DbContext操作数据库 Entity Framework Core (EF Core) 是 Microsoft 提供的一个对象关系映射器 (ORM)它允许开发者使用 .NET 对象来处理数据库。EF Core 提供了几种使用模式帮助开发者根据项目需求高效地管理数据库和对象之间的关系。以下是 EF Core 的主要使用模式 Code First
Code First 是 EF Core 中最常用的模式。在这种模式下开发者首先定义 C# 类通常称为实体或模型然后 EF Core 根据这些类生成数据库结构。Code First 允许开发者完全控制数据库结构因为它基于代码中的类和配置来创建数据库。
使用 Code First 的好处包括
完全的数据库控制可以通过迁移Migrations轻松地进行版本控制支持测试驱动的开发
要启用 Code First你需要定义实体类配置 DbContext并可能还需要配置一些额外的映射或约定。
Database First
Database First 允许开发者从现有的数据库开始并使用 EF Core 反向工程工具如 Scaffold-DbContext来生成 C# 实体类和 DbContext。这样开发者就可以使用 EF Core 的功能来查询、更新和删除数据库中的数据而无需手动编写 SQL 代码。
使用 Database First 的好处包括
可以基于现有数据库进行开发快速生成 C# 实体类和 DbContext仍然可以利用 EF Core 的所有功能
要使用 Database First你需要先有一个数据库并使用 EF Core 的反向工程工具来生成代码。
在选择使用哪种模式时你应该考虑项目的需求、开发者的技能和偏好以及项目的长期规划。对于大多数新项目Code First 通常是一个很好的选择因为它提供了最大的灵活性和控制力。然而如果你正在与现有的数据库进行交互或者你的团队更习惯于使用图形化工具来管理数据模型那么 Database First 可能更适合你。 Model First 曾经是 EF非 Core版本中的一个特性但在 EF Core 中这个模式并不直接支持。在 ModelFirst 模式下开发者使用图形化工具如 Entity Framework Designer来创建EDMX实体数据模型文件这个文件定义了数据模型和映射。然后EF 会根据这个模型生成数据库结构。由于 EF Core 不直接支持 Model First如果你想要使用类似的功能你可能需要手动创建 EDMX文件这通常不推荐因为它与 EF Core 不兼容或者使用 Code First 并依赖第三方工具来生成和维护图形化模型。 Code First 示例
安装 Entity Framework Core
“工具”“NuGet 包管理器”“包管理器控制台”。
运行以下命令
Install-Package Microsoft.EntityFrameworkCore.Sqlite提示:还可以通过右键单击项目并选择“管理 NuGet 程序包”来安装包
创建模型
右键单击项目然后选择“添加”“类” 输入“Model.cs”作为名称然后单击“添加” 将此文件的内容替换为以下代码
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;public class BloggingContext : DbContext
{public DbSetBlog Blogs { get; set; }public DbSetPost Posts { get; set; }public string DbPath { get; }public BloggingContext(){var folder Environment.SpecialFolder.LocalApplicationData;var path Environment.GetFolderPath(folder);DbPath System.IO.Path.Join(path, blogging.db);}// The following configures EF to create a Sqlite database file in the// special local folder for your platform.protected override void OnConfiguring(DbContextOptionsBuilder options) options.UseSqlite($Data Source{DbPath});
}public class Blog
{public int BlogId { get; set; }public string Url { get; set; }public ListPost Posts { get; } new();
}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# 类拆分为其自己的文件。
创建数据库
在“包管理器控制台(PMC)”中运行以下命令
Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration InitialCreate
Update-Database这会安装 EF Core 的 PMC 工具。 Add-Migration 命令为迁移搭建基架以便为模型创建一组初始表。 Update-Database 命令创建数据库并向其应用新的迁移。
创建、读取、更新和删除
打开 Program.cs 并将内容替换为以下代码
using System;
using System.Linq;using var db new BloggingContext();// Note: This sample requires the database to be created before running.
Console.WriteLine($Database path: {db.DbPath}.);// 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();Database First 示例
在Database First模式中我们从现有的数据库开始并使用EF Core的反向工程工具如Scaffold-DbContext来生成C#实体类和DbContext。
1. 使用Scaffold-DbContext命令生成代码通常在Package Manager Console中执行
Scaffold-DbContext ServermyServerAddress;DatabasemyDataBase;Trusted_ConnectionTrue; Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context BloggingContext -Tables Blogs,Posts这条命令会根据指定的数据库连接字符串、数据库提供程序在这个例子中是SqlServer、输出目录、DbContext名称以及要包含的表来生成代码。
2. 生成的代码类似于Code First中的实体类和DbContext但它们是基于现有数据库的。
生成的代码可能类似于上面的Code First示例但细节如属性名、数据类型、关系等将完全基于数据库的结构。
3. 使用生成的DbContext操作数据库
一旦代码被生成你就可以像使用Code First模式一样使用这些实体类和DbContext来操作数据库了。
请注意由于Model First在EF Core中并不直接支持所以没有直接的代码示例。如果你需要类似的功能你可能需要手动创建EDMX文件但这通常不推荐因为它与EF Core不兼容或者使用Code First模式并依赖第三方工具来生成和维护图形化模型。