gpt4 book ai didi

entity-framework - 不使用 Entity Framework 代码优先调用种子方法

转载 作者:行者123 更新时间:2023-12-03 20:53:38 25 4
gpt4 key购买 nike

自 4.1 以来,我一直在努力解决这个问题(现在我在 4.3 上)。在我看来,要调用种子方法,我要做的就是以下几点:

1)在sqlserver上创建一个空的数据目录
2)执行以下代码:

Database.SetInitializer(new DropCreateDatabaseAlways<SiteDB>());

我的 SiteDB 定义如下:
public class SiteDBInitializer : 
DropCreateDatabaseAlways<SiteDB>
{
protected override void Seed(SiteDB db)
{
... (break point set here that never gets hit)

我觉得我必须遗漏一些非常简单的东西,因为这会创建我的表,但不会调用种子方法。

为了更清楚地说明这一点,这是一个包含所有代码的完整示例。当我运行它时,种子永远不会被调用:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Data.Entity;

namespace ConApp
{
internal class Program
{
private static void Main(string[] args)
{
Database.SetInitializer(new SiteDBInitializer());
using (var db = new SiteDB())
{
var x = db.Customers;
}
}
}

public class SiteDB : DbContext
{
public DbSet<Customer> Customers { get; set; }
}

public class Customer
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }

public string LastName { get; set; }
}

public class SiteDBInitializer :
DropCreateDatabaseAlways<SiteDB>
{
protected override void Seed(SiteDB db)
{
db.Customers.Add(new Customer() {LastName = "Kellner"});
db.Customers.Add(new Customer() {LastName = "Jones"});
db.Customers.Add(new Customer() {LastName = "Smith"});
db.SaveChanges();
}
}

}

最佳答案

您需要调用Database.SetInitializer(new SiteDBInitializer());反而。

关于entity-framework - 不使用 Entity Framework 代码优先调用种子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com