c# - 更改 asp.net mvc 模型属性时无法访问数据库

标签 c# asp.net-mvc entity-framework

我正在开发一个项目并更改了我的模型,现在每当我运行我的项目时,我都会为我更改的所有模型收到这些错误:

对于我的人模型:

Invalid column name 'Location'.

Invalid column name 'EmailAddress'.

Invalid column name 'PlaceOfBirth'.

对于我的监护人模型:

Invalid object name 'Admission.Guardian'.

这是我的 DbContext 模型:

public class SchoolInfoEntities: DbContext
    {
        public DbSet<Students> Student { get; set; }
        public DbSet<Class> Classes { get; set; }
        public DbSet<Guardian> Guardians { get; set; }
        public DbSet<Staff> Staffs { get; set; }
        public DbSet<Subject> Subjects { get; set; }
        public DbSet<Department> Departments { get; set; }
        public DbSet<SchoolDetails> SchoolDetails { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity<Students>()
                .HasMany(t => t.Guardians)
                .WithMany(t => t.Students)
                .Map(m =>
               {
                   m.ToTable("Admission.StudentGuardian");
                   m.MapLeftKey("StudentId");
                   m.MapRightKey("GuardianId");
               });

            modelBuilder.Entity<Staff>()
                .HasMany(t => t.Subjects)
                .WithMany(t => t.Staffs)
                .Map(m =>
                {
                    m.ToTable("Admission.SubjectInstructor");
                    m.MapLeftKey("StaffId");
                    m.MapRightKey("SubjectName");
                });

            modelBuilder.Entity<Staff>()
                .HasMany(t => t.Departments)
                .WithMany(t => t.Staffs)
                .Map(m =>
                {
                    m.ToTable("Admission.StaffDepartment");
                    m.MapLeftKey("StaffId");
                    m.MapRightKey("DepartmentId");
                });

            Database.SetInitializer<SchoolInfoEntities>(null);

        }
    }

有什么我没有考虑的吗?请帮帮我。

最佳答案

您不能在不更新相关数据库字段的情况下更改模型字段。您需要创建一个迁移并应用它,以使您的模型与数据库模式保持同步。

https://docs.asp.net/en/latest/data/ef-mvc/migrations.html

如果您有数据库的生产版本,则需要对其运行相同的迁移。

关于c# - 更改 asp.net mvc 模型属性时无法访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40510206/

相关文章:

c# - INNER JOINS 和 LEFT JOINS 的 EF Core 困难

c# - 如何使用 InstallShield LE 为具有 SQL Server 2012 本地数据库的 Visual Studio 2012 Windows 窗体应用程序创建 setup.exe 文件

c# - 如何统计我的列的总数?

c# - Visual Studio 解决方案不可用(重新加载不起作用)

asp.net-mvc - 地址字段的自定义 ASP.NET MVC 验证摘要

c# - MVC3 类型存在于两个不同的程序集中

c# - XNA 替代方案

c# - 为 C# 初始化 geckoWebBrowser 异常

c# - 在 asp.net MVC 中使用事件目录进行身份验证

entity-framework - 更新 Entity Framework v4 中的非标量实体