2016-11-09 38 views
1

我正在開發一個項目,並且對模型進行了更改,現在每當我運行我的項目時,我都會針對所做的更改的所有模型於:當我更改asp.net mvc模型屬性時,無法訪問數據庫

我的人模型:

無效列名 '地點'。

無效的列名'EmailAddress'。

無效的列名'PlaceOfBirth'。

爲我的守護模式:

無效的對象名稱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); 

     } 
    } 

有什麼,我不考慮?請幫助我們。

回答

1

在運行您的應用程序之前,您需要在程序包管理器控制檯上運行以下命令。

注意:您需要設置正確的連接字符串,其中需要運行腳本的位置(db服務器)。

PM> Add-Migration "Added_New_Properties" 

PM> Update-Database 
+0

什麼是「添加新屬性」? –

+0

這是一個遷移腳本名稱。您可以給它任何名稱。 – Sampath

+0

對不起@Sampath遲到的反饋。我得到了它的工作,感謝你們所有人的支持。你可以請看看這個:http://stackoverflow.com/questions/40663363/asp-net-mvc-views-for-many-to-many-relationship?noredirect=1#comment68558862_40663363 –

1

由於您使用代碼首先,的EntityFramework始終確保該模型與數據庫,應用程序啓動時同步,它的類和它的屬性與表和列比較數據庫考慮您在Context中使用Fluent API所做的任何更改。

將新屬性添加到任何類中時,必須在映射到此類的數據庫表中添加相應的列,或者可以讓EntityFramework使用遷移爲您完成此操作。

你必須首先enbale遷移使用Enable-Migrations命令

之後,運行命令Add-Migration [Migration Name]將模型比較到數據庫並生成遷移文件夾裏面的一些代碼來更新數據庫,它應該有一個UpDown方法。

要運行將數據庫更新爲代碼的Up方法,必須運行Update-Database命令。

所有這些命令都必須在軟件包管理器控制檯中運行,您可以從工具 - > NuGet軟件包管理器 - >軟件包管理器控制檯訪問它們。