实体框架代码优先 - Code First 入门
实体框架代码优先 (Code First) 是 Entity Framework 中一种重要且高级的特性,它使用 C# 或 VB.NET 代码来定义数据模型,自动创建数据库和表之间的映射。本文将介绍如何入门实体框架代码优先,其中包括以下几个步骤:
- 安装 Entity Framework NuGet 包
- 创建数据模型
- 配置数据上下文
- 执行迁移
- 示例说明
1. 安装 Entity Framework NuGet 包
首先,我们需要在我们的项目中安装 Entity Framework NuGet 包,在 Visual Studio 的 Package Manager Console 中,使用以下命令:
Install-Package EntityFramework
2. 创建数据模型
接下来,我们需要创建数据模型,它代表了我们实际存储在数据库中的数据。在 Code First 中,我们使用 C# 或 VB.NET 类来创建数据模型。
以一个简单的博客为例,我们可以创建以下类:
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public DateTime PublishDate { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
在上面的例子中,我们创建了两个类:Blog
和 Post
。Blog 包含博客的 id、名称、URL 和一组帖子。Post 包含帖子的 id、标题、内容、发布日期和属于哪个博客的外键。
3. 配置数据上下文
完成了数据模型定义,接下来我们需要配置数据上下文类。数据上下文是对象与数据库交互的桥梁,它可以理解为一个数据库连接对象。
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
}
}
在上面的代码中,我们创建了 BloggingContext
类,并为其添加了两个属性:Blogs
和 Posts
,它们代表了数据库中的两个表。另外,我们重写了 OnConfiguring
方法,配置 EF 使用本地 Microsoft SQL Server 数据库。
4. 执行迁移
最后,我们需要执行一个数据库迁移的操作,创建数据库和表。在 Visual Studio 中,使用以下命令生成迁移:
Add-Migration InitialCreate
执行迁移:
Update-Database
此时,将会生成数据库和表。在这个例子中,会创建一个 Blogging
数据库,并且在里面创建 Blogs
和 Posts
两个表。
5. 示例说明
我们使用上面的数据模型和数据上下文创建两个示例。
示例一
在我们上一步使用了命令 Update-Database
后,数据库已经被生成。现在,我们可以向数据库中添加记录。
using(var db = new BloggingContext())
{
var blog = new Blog { Name = "My Blog", Url = "http://www.example.com" };
db.Blogs.Add(blog);
db.SaveChanges();
}
通过上面的示例,我们向数据库中添加了一条数据,它的字段如下:
BlogId | Name | Url |
---|---|---|
1 | My Blog | http://www.example.com |
示例二
有了数据之后,我们也可以从数据库中查询到我们插入的数据。代码如下示例所示。也说明了,EF 代码优先提供了非常方便的数据访问功能。
using (var db = new BloggingContext())
{
var blogs = db.Blogs.ToList();
foreach (var blog in blogs)
{
Console.WriteLine($"BlogId: {blog.BlogId}, Name: {blog.Name}, Url: {blog.Url}");
}
}
此时,输出的结果如下:
BlogId: 1, Name: My Blog, Url: http://www.example.com
至此,我们完成了 Entity Framework 代码优先 Code First 的入门学习。在实际的开发中,我们可以使用 Code First 来进行快速的数据库开发,同时也可以在 Code First 的基础上进行更丰富的数据定义和数据关联。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Entity Framework代码优先Code First入门 - Python技术站