我在Entity Framework 6中播种的实现代码似乎与EntityFramework核心兼容
这是我的代码
public class CustomerOrderSeedData : DropCreateDatabaseIfModelChanges<CustomerOrderEntities>
{
protected override void Seed(CustomerOrderEntities context)
{
GetOrderDetails().ForEach(od => context.OrdersDetails.Add(od));
context.Commit();
}
private static List<OrdersDetails> GetOrderDetails()
{
return new List<OrdersDetails>
{
new OrdersDetails {
OrderId = 1,
ProductId = 1,
Quantity = 10,
UnitPrice = 12,
Discount = 3
},
new OrdersDetails {
OrderId = 1,
ProductId = 2,
Quantity = 3,
UnitPrice = 4,
Discount = 2
}
}
}
EntityFrameworkCore似乎不喜欢DropCreateDatabaseIfModelChanges关键字。可以有人向我展示如何使用EntityFrameworkcore完成播种。
答案 0 :(得分:0)
是的。你不能在EF核心上使用EF 6.X实现.B'cos EF核心有不同的API。
您可以在Startup.Configure()
中的服务范围内运行种子代码,如下所示。
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetService<MyContext>();
context.Database.Migrate();
context.EnsureSeedData();
}
以下是您可以看到完整实施上述代码段的链接(请参阅种子部分下)。