新人求教有关MVC--EF Code First(修改Model后,自动更新数据表)

lanyanse0504 2013-12-05 10:17:39
见如下代码,类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" }
};
}
}
...全文
6141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
点子n 2013-12-07
  • 打赏
  • 举报
回复
两种方式 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());


   ........
}
threenewbee 2013-12-05
  • 打赏
  • 举报
回复
基本语法问题 base.Method就是调用基类的方法,不会因为基类是virtual而调用子类。 如果你想知道一个方法是谁调用的,最简单的做法是在这个方法内下一个断点,运行程序到此处,然后在调用堆栈窗格中可以看到。这里Seed是被基类调用的。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧