.net – 使用Model First方法时如何种子数据?

所以我正在学习MVC3和EF4。
我尝试了代码第一种方法,但对我来说太混乱了。我可以创建类没有问题,但是处理外键和彼此之间的关系时,硬件部分来了。

但是我已经和模特儿一起去了。这样我可以直观地设计它,看看关系在哪里。

在创建模型之后,它会为我创建一个针对我的sql,这对我的sql Express数据库执行。完成并完成

现在我想要我的表中的数据。当然,我可以把它们添加到使用服务器浏览器中,但很可能我会在我的模型中进行更改。并不断更新数据库。所以我不能手动输入数据。我知道如果您使用代码,您可以导出DropCreateDatabaseIfModelChanges并覆盖种子方法

但是,如何使用模型第一种方法来做到这一点?
我有以下代码

public class DatabaseInitializer : IDatabaseInitializer<BettingContext> {
    public void InitializeDatabase(BettingContext context) {
        var teams = new List<Team> {
            new Team { Name="Toronto Maple Leafs",League="NHL"},new Team { Name="Boston Bruins",new Team { Name="Vancouver Canucks",new Team { Name="Nashville Predators",new Team { Name="Montreal Canadiens",};
    }
}

当然和在我的全球文件

protected void Application_Start()
{
    Database.Setinitializer<BettingContext>(new DatabaseInitializer());
    AreaRegistration.RegisterallAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

那么现在怎么办?如何告诉它运行方法?我究竟做错了什么?

解决方法

你可以有这样的东西:
public class MySeedData : DropCreateDatabaseIfModelChanges<YourDataBaseContextClass>
{
    protected override void Seed(YourDataBaseContextClass context)
    {  
       // Create objects here and add them to your context DBSets...

    }
}

public class YourDataBaseContextClass : DbContext
{


}

然后,在Application_Start()中调用

Database.Setinitializer(new MySeedData());

在您的情况下,您可以尝试手动创建DbSets(使用您的模型的第一类),并尝试使用上面的代码将其插入。它是一个模型第一代码的混合。

public class FourthCoffeeWebContext : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

添加到:CreateDatabaseIfNotExists<(Of <(<‘TContext>)>)>

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...