2016-11-20 2 views
1

Моего код реализации для высева в Entity Framework 6 кажется совместимым доцент с ядром EntityFrameworkПосева база данных imlementation из EF6 не работает в 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 6.X с сердечником EF. У ядра EF 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