新人求教有关MVC--EF Code First(修改Model后,自动更新数据表)
见如下代码,类SampleData中的Seed()方法重写了基类 DropCreateDatabaseIfModelChanges中的Seed方法,我想问的是这个重写的Seed()方法是如何被调用的呢?在项目中没有找到任何显式调用它的地方,但运行时它确实被调用了...第二个问题,base.Seed(context);这句代码怎么理解,是调用基类的Seed()方法?若是这样,现在基类的方法已经被SampleData类实现了,这样调用岂不是又回到调用 override void Seed()? 感觉死循环了。。 新手百思不得其解,不知哪儿想错了,还望大神们赐教。谢谢!
--------------------编程问答-------------------- 基本语法问题
public class SampleData : DropCreateDatabaseIfModelChanges<MusicStoreEntities>
{
protected override void Seed(MusicStoreEntities context)
{
base.Seed(context);
var genres = new List<Genre>
{
new Genre { Name = "Rock" },
new Genre { Name = "Jazz" },
new Genre { Name = "Metal" },
new Genre { Name = "Alternative" },
new Genre { Name = "Disco" },
new Genre { Name = "Blues" },
new Genre { Name = "Latin" },
new Genre { Name = "Reggae" },
new Genre { Name = "Pop" },
new Genre { Name = "Classical" }
};
}
}
base.Method就是调用基类的方法,不会因为基类是virtual而调用子类。
如果你想知道一个方法是谁调用的,最简单的做法是在这个方法内下一个断点,运行程序到此处,然后在调用堆栈窗格中可以看到。这里Seed是被基类调用的。 --------------------编程问答-------------------- 两种方式
1.web.config配置(百度一下)
2.Global.asax文件中进行数据初始化
比如MvcMusicStore用的是第2种,Global.asax的Application_Start()方法中:
protected void Application_Start()
{
//初始化数据
System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData());
........
}
补充:.NET技术 , .NET Framework