c# - 数据没有出现在特定的表中,只有一个表有数据

标签 c# asp.net asp.net-mvc database visual-studio

出于某种原因,在学生表中只生成了学生的数据。但是,注册表和类(class)表中没有数据,即使我将它们添加到 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);
        }
    }
}

最佳答案

尝试在最后只调用一次 context.SaveChanges()

另请查看以下 SO 问题/答案:

Multiple SaveChanges Calls in Entity Framework

Call SaveChanges twice inside transaction

关于c# - 数据没有出现在特定的表中,只有一个表有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30133694/

相关文章:

c# - 自托管服务时的 WCF 自定义错误页面(无 IIS)

c# - 什么会导致此代码产生文件锁定错误?

c# - 使用 C# 中的方法关闭特定窗体

asp.net - 将 asp.net mvc4 应用程序部署到 godaddy

c# - 将属性作为参数传递

asp.net-mvc - 在 NopCommerce 3.8 的管理面板中添加子菜单

c# - MySQL 表名作为参数

javascript - 将值从 ajax 传递到 MVC Controller 时为空值

c# - UseSqlServer 方法缺少 MVC 6

c# - NHibernate - 延迟加载原始类型