📅  最后修改于: 2023-12-03 14:40:56.850000             🧑  作者: Mango
在EF Core中,种子数据是指在数据库迁移时预先插入一些测试数据,以便在应用程序启动时跟踪和测试系统。然而,当需要向已经迁移好的数据库中插入新的种子数据时,我们通常会遇到一些问题,因为我们不应该再次运行迁移脚本。
在这种情况下,需要一种方法来插入新的种子数据,而不是通过迁移脚本来运行。这种方法通常称为伪造数据(Fake Data),意味着我们可以伪造数据到数据库中,而不必再运行这些迁移脚本。
为了创建种子数据,我们首先需要创建一个模型类,用于向数据库中插入的条目。在以下示例中,我们将创建一个简单的Book
模型类,并包括一些种子数据。
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public int Year { get; set; }
}
接下来,我们需要在 DbContext
中添加一个种子数据方法。 在该方法中,我们将在 OnModelCreating
方法中获取 Book
数据,并将其添加到数据库中。
public class ApplicationDbContext : DbContext
{
public DbSet<Book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>().HasData(
new Book { Id = 1, Title = "The Great Gatsby", Author = "F. Scott Fitzgerald", Year = 1925 },
new Book { Id = 2, Title = "To Kill a Mockingbird", Author = "Harper Lee", Year = 1960 },
new Book { Id = 3, Title = "Pride and Prejudice", Author = "Jane Austen", Year = 1813 },
new Book { Id = 4, Title = "Jane Eyre", Author = "Charlotte Bronte", Year = 1847 }
);
}
}
一旦我们有新的种子数据需要添加到数据库中,我们可以使用以下代码插入最新的数据。这将在数据库中添加新的条目,而不必运行迁移脚本。
using (var db = new ApplicationDbContext())
{
db.Books.Add(new Book { Id = 5, Title = "The Lord of the Rings", Author = "J.R.R. Tolkien", Year = 1954 });
db.SaveChanges();
}
在这个例子中,我们将新的 Book
实例添加到 Books
数据集中,并使用 SaveChanges
方法将更改保存到数据库中。
在本文中,我们学习了如何使用 EF Core Seed Data 来向数据库中添加测试数据,并使用伪造数据向已经迁移过的数据库中插入新的种子数据,这使我们不必再次运行迁移脚本。