我正在开发一个项目并更改了我的模型,现在每当我运行我的项目时,我都会为我更改的所有模型收到这些错误:
对于我的人模型:
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/