【问题标题】:How to add computed column using migrations in code first?如何首先在代码中使用迁移添加计算列?
【发布时间】:2017-07-20 16:06:51
【问题描述】:

我已经在我的数据模型中添加了这个计算列

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public string FullName { get; private set; }

之后我使用这个查询在我的数据库中创建了它

ALTER TABLE [MyDataBase].[dbo].[User] ADD FullName as ([FirstName] + ' ' + [LastName])

当我运行我的代码时,我收到一个错误,表明我的数据库已更改。 我的问题如何为这个计算列创建迁移(因为它已经使用 sql 查询创建)

【问题讨论】:

  • 我认为你需要迁移
  • @UmairAnwaar 但是如果我使用这个Add-Migration name 然后Update_Database 我会得到一个错误,这个列已经创建了。

标签: entity-framework ef-code-first database-migration


【解决方案1】:

Entity Framework 不知道如何正确处理计算列的迁移,因此您需要帮助它。

首先,从数据库中的表中删除计算列。

然后在包管理器控制台中创建一个新的迁移:

add-migration FullNameComputed

将新迁移中 Up() 方法的主体替换为以下内容:

Sql("ALTER TABLE [TableName] ADD [FullName] AS ([FirstName] + ' ' + [LastName])");

最后,从包管理器控制台运行迁移:

update-database

【讨论】:

  • 您还应该实现Down 方法来删​​除列,以防迁移在数据库中恢复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
相关资源
最近更新 更多