【发布时间】:2015-07-19 22:50:47
【问题描述】:
由于某种原因,只有 Student 的数据在 Student 的表中生成。但是,注册表和课程表中没有数据,即使我将它们添加到 SchoolInitializer 中。我错过了什么吗?有什么建议?启动我的应用程序时,我会关闭与我的数据库的连接,重建解决方案,然后不调试就开始,单击正在创建数据的链接,然后检查我的表。
namespace MyFirstWebApplication.Models
{
public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext>
{
protected override void Seed(SchoolContext context)
{
var students = new List<Student>
{
new Student{FirstName = "James", LastName= "Dean", EnrollmentDate = DateTime.Parse("2014-01-02") },
new Student{FirstName = "Lynda", LastName = "Thames", EnrollmentDate = DateTime.Parse("2013-11-02")}
};
foreach (var temp in students)
{
context.Students.Add(temp);
}
context.SaveChanges();
var courses = new List<Course>
{
new Course{CourseName = "Java", TotalCredits = 4},
new Course{CourseName = "C#", TotalCredits = 4}
};
foreach (var temp in courses)
{
context.Courses.Add(temp);
}
context.SaveChanges();
var enrollments = new List<Enrollment>
{
new Enrollment{StudentId = 1, CourseId = 1, Grade = 3},
new Enrollment{StudentId = 1, CourseId = 2, Grade = 4}
};
foreach (var temp in enrollments)
{
context.Enrollments.Add(temp);
}
context.SaveChanges();
}
}
}
namespace MyFirstWebApplication.Models
{
public class SchoolContext : DbContext
{ //enables CRUD functionality
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
namespace MyFirstWebApplication
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Database.SetInitializer<SchoolContext>(new SchoolInitializer() );
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
【问题讨论】:
-
好的,我发现了问题。就是这个方法:protected override void OnModelCreating 这个方法阻止了我更新我的表和数据。有什么理由吗?例如,我为 SchoolInitializer 中的学生列表添加了一个新学生。在没有调试的情况下重建并开始,我的页面没有随着新学生更新。我注释掉了该方法并重建并在没有调试的情况下开始,并且列表与我在数据库中的表一起更新
标签: c# asp.net asp.net-mvc database visual-studio