如何在Code First中使用迁移添加计算列?

4
我已在数据模型中添加了此计算列。
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public string FullName { get; private set; }

接着,我使用以下查询在我的数据库中创建了它

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

当我运行我的代码时,出现了一个错误,提示我的数据库已经发生了变化。我的问题是如何为这个计算列创建迁移(因为它已经使用SQL查询创建了)。

我认为您需要迁移。 - Umair Anwaar
@UmairAnwaar 但是如果我使用 Add-Migration name 然后 Update_Database,我会收到一个错误,指出该列已经被创建。 - Waddah Rasheed
1个回答

8

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

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

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

add-migration FullNameComputed

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

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

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

update-database

1
你还应该实现 Down 方法,以便在数据库中回滚迁移时删除该列。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接