2016-11-20 71 views
1
不工作

在實體框架6 dosent播種我的實現代碼似乎與核心的EntityFramework兼容播種數據庫imlementation在EntityFrameworkcore

這裏是我的代碼

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

是的。您不能在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