[英]EF Core 2.1. Add custom column to MigrationHistory table
我使用EF Core 2.1 Code-First。
SELECT * FROM [dbo].[__MigrationsHistory]
從2列返回表
我正在尋找一種方法來添加一個AppliedOn
列,它將存儲遷移實際應用於數據庫的時間。
你可以在SQL中做到這一點:
alter table [dbo].[__MigrationHistory] add AppliedOn Datetime default getdate()
當EF將遷移應用於數據庫時,它會在表__MigrationHistory
插入一行。 此SQL腳本在getDate()
AppliedOn
列添加為默認值。 插入行時,該列將包含此插入的當前日期時間。
或者,您可以使用EF Migration執行相同的操作:
通過添加到第一次遷移(或新遷移):
public partial class Intial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<DateTime>(
name: "AppliedOnUtc",
schema: "Conversations",
table: "__MigrationsHistory",
defaultValueSql: "GETUTCDATE()"
);
}
....
}
有來自微軟的文章在這里是指如何在一個稍微EF友好的方式做到這一點,盡管他們提出了很多特別小心,因為你可能無意中打破遷移。
本文僅支持EF6.0以上,EF Core 2.1 可能支持,但我沒有嘗試過,所以我不知道您是否可以使用它,文章也不清楚。
我完全明白你想要這樣做的原因,但你可以考慮使用自定義補丁表,並在創建代碼第一次遷移時從Configuration.cs類插入。 是的,這是另一個步驟,是的,它不是那么優雅,但從EF的角度來看可能更安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.