【问题标题】:Entity Framework code-first : how to add more props on model and update database?实体框架代码优先:如何在模型上添加更多道具和更新数据库?
【发布时间】:2018-05-16 23:19:30
【问题描述】:

我已经使用 Visual Studio 2017 创建了一个新的 ASP.NET Core 2.0 项目。目前我有一个 Coach 模型类:

public class Coach
{
        public int ID { get; set; }
        public string Name { get; set; }
        public string Location { get; set; }
        public string Methodology { get; set; }
        public string Price { get; set; }
        public int Rating { get; set; }

        //New property
        public string Email { get; set; }
}

我想向Coach 类添加一个新属性Email。我还想创建一个Review 类,用于查看Coach。我的模特班User 评论教练。但是,当我添加新属性和新类时,我会在网络应用启动时收到此消息:

处理请求时数据库操作失败。

SqlException:列名“电子邮件”无效。

为 ApplicationDbContext 应用现有迁移可能会解决此问题。存在尚未应用于数据库的 ApplicationDbContext 迁移

00000000000000_CreateIdentitySchema
应用迁移

在 Visual Studio 中,您可以使用包管理器控制台将挂起的迁移应用到数据库:

PM> 更新数据库
或者,您可以在项目目录的命令提示符下应用挂起的迁移:

dotnet ef database update

按照我收到的消息不起作用。问题仍然存在。谁能指出我正确的方向如何更新代码然后更新本地存储的数据库?当更改模型代码优先并希望数据库反映该更改时,工作流程应该是什么样的?

【问题讨论】:

  • 在包管理器控制台中运行“dotnet ef database update”命令将解决您的问题
  • 你试过使用部分类吗?
  • 不,我没试过!我会研究它。谢谢

标签: c# asp.net model entity-framework-core


【解决方案1】:

生成和运行迁移

Code First Migrations 有两个您需要运行的主要命令。

Add-Migration 将根据您自上次迁移创建以来对模型所做的更改为下一次迁移搭建基架

Update-Database 会将所有待处理的迁移应用到数据库 我们需要构建一个迁移来处理我们添加的新 Email 属性。 Add-Migration 命令允许我们为这些迁移命名,我们就叫我们的AddEmail

在包管理器控制台中运行Add-Migration AddEmail 命令

在包管理器控制台中运行Update-Database 命令

【讨论】:

  • 我执行了 Add-Migration AddEmail 和 Update-Database 但收到此消息:处理请求时发生未处理的异常。 SqlException:列名“电子邮件”无效。 System.Data.SqlClient.SqlCommand+c。 b__174_0(Task 结果)
  • 如果您没有 Migrations 文件夹,请先在包管理器控制台中运行 Enable-Migrations 命令,然后运行其他两个命令。
猜你喜欢
  • 1970-01-01
  • 2011-09-30
  • 2016-06-19
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多