首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改asp.net mvc模型属性时无法访问数据库

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

Stack Overflow用户
提问于 2016-11-09 15:11:21
回答 3查看 317关注 0票数 1

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

for model模型:

无效的列名‘位置’。 无效列名“电子邮件地址”。 无效列名“PlaceOfBirth”。

对我的监护人来说:

无效的对象名称'Admission.Guardian‘。

以下是我的DbContext模型:

代码语言:javascript
运行
复制
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);

        }
    }

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

EN

回答 3

Stack Overflow用户

发布于 2016-11-09 15:14:23

如果不更新相关的数据库字段,则无法更改模型字段。您需要创建一个迁移并应用它,以使您的模型与数据库架构保持同步。

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-11-09 16:16:35

在运行应用程序之前,您需要在包Manger控制台上运行以下命令。

注意:,您需要在需要运行脚本的位置(db服务器)设置正确的连接字符串。

代码语言:javascript
运行
复制
PM> Add-Migration "Added_New_Properties"

PM> Update-Database
票数 1
EN

Stack Overflow用户

发布于 2016-11-10 07:13:33

由于您首先使用代码,所以EntityFramework始终确保模型与数据库同步,在应用程序启动时,它将类及其属性与数据库中的表和列进行比较,同时考虑到在上下文中使用Fluent API所做的任何更改。

当您将一个新属性添加到任何类中时,您必须在数据库表中添加对应的列,该列映射到该类,或者可以通过使用迁移让EntityFramework为您完成这一任务。

您必须首先使用Enable-Migrations命令进行迁移。

然后,运行命令Add-Migration [Migration Name],将模型与数据库进行比较,并在Migrations文件夹中生成一些代码来更新数据库,它应该有一个UpDown方法。

要运行将数据库更新为代码的Up方法,必须运行Update-Database命令。

所有这些命令都必须在Package控制台中运行,您可以从Tools -> NuGet Package -> Package控制台到达该控制台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40510206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档