gpt4 book ai didi

c# - 无法让 Entity Framework MVC 应用程序将数据播种到数据库

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:45 25 4
gpt4 key购买 nike

诚然,我在这个问题上有点疯狂,所以请耐心等待。我已经尝试这样做大约 5 个小时了,此时我几乎只是在用头撞墙。这是我所拥有的:

全局.asax.cs

namespace MyApp
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Database.SetInitializer(new MyInitializer());
}
}
}

MyInitializer.cs

namespace MyApp.App_Start
{
public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
// seed data goes here
sample_data = new List<MyModel>
{
new MyModel{"foo"},
new MyModel{"bar"}
};

sample_data.ForEach(s => context.MyModels.Add(s));
context.SaveChanges();
}
}
}

MyContext.cs

namespace MyApp.Models
{
public class MyContext : DbContext
{
public MyContext() : base("MyContext")
{
Database.SetInitializer<MyContext>(new MyInitializer());
}

public DbSet<MyModel> MyModels { get; set; }
}
}

Web.config

<connectionStrings>
<add name="MyContext" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=MyContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|MyContext.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

<entityFramework>
<contexts>
<context type="MyApp.Models.MyContext, MyApp">
<databaseInitializer type="MyApp.App_Start.MyInitializer, MyApp" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>

我只是想不通为什么它不播种任何数据。我已经阅读了这里和其他地方的十几个或更多类似案例,几乎每次迭代都尝试过,但仍然根本无法触发它。它甚至从未触及 Seed() 函数。数据库存在,如果我删除它,它会重建,但不会填充。

我倾向于我的 web.config 有问题,但我还没有弄清楚。有什么建议吗?

最佳答案

根据 this blog ,在您实际尝试访问数据库之前不会调用 DbInitializer。

// Code copied from linked blog
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseAlways<BlogContext>());
using (var db = new BlogContext()) //initializer won't be called here
{
...
db.Categories.Add(cat); //initializer will be called here
db.BlogPosts.Add(post);
...
}
Console.ReadLine();
}

关于c# - 无法让 Entity Framework MVC 应用程序将数据播种到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31868395/

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