仅在初始创建 EF 代码优先数据库时创建引用数据

Create reference data only when EF code first database is initially created

我有一个名为 "Invoice" 的 table,它有一个名为 "PaymentTypeId" 的字段指向另一个名为 "PaymentType" 的 table。

首先使用EntityFramework代码,我们如何添加参考数据如:

PaymentTypeId: 1 | Description: Card
PaymentTypeId: 2 | Description: Cash
PaymentTypeId: 3 | Description: Cheque

但是只有在第一次创建数据库的时候?

我知道 OnModelCreating 覆盖,但是我可以从 table select 查看数据是否存在;我将其视为额外的 Db 调用。在初始创建数据库后,是否还有其他我可以挂钩以仅插入参考数据的东西?

这是针对 MVC5 应用程序的。

PS:如果这个问题已经得到解答,我们深表歉意。也许我搜索的词有误。

您可以覆盖种子方法。在 Migrations 文件夹下的 Configuration.cs 中:

protected override void Seed(YourDbContext context)
{
    context.PaymentType.AddOrUpdate(x => x.Id,
        new PaymentType() { Id = 1, Description= "Card" },
        new PaymentType() { Id = 2, Description= "Cash" },
        new PaymentType() { Id = 3, Description= "Cheque" }
        );    
}

不要忘记添加所需的命名空间。详情可以看here