EF6的播种数据库实现在EntityFrameworkcore中不起作用

时间:2016-11-20 20:53:59

标签: c# entity-framework entity-framework-core .net-core

我在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完成播种。

1 个答案:

答案 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();
 }

以下是您可以看到完整实施上述代码段的链接(请参阅种子部分下)。

Implementing Seeding EF Core 1.0