仅在初始创建 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
我有一个名为 "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