2017-10-02 21 views
1

Mon projet a 2 DbContext (dans 2 projet Entity Framework): CoreDbContext et Module1DbContextComment initialiser les données de semences d'une autre DbContext

Dans CoreDbContext J'ai 1 table nommée SystemStatus. Alors est-il possible d'insérer des données de départ à cette table de Module1DbContext? J'ai essayé de passer CoreDbContext à la méthode Seed dans Module1DbContext mais cela a fonctionné.

+0

Est-ce EF Core ou EF 6? Pour EF Core, voir [ici] (https://blogs.msdn.microsoft.com/dotnet/2016/09/29/implementing-seeding-custom-conventions-and-interceptors-in-ef-core-1-0 /) –

+0

Ceci est EF 6, bro –

Répondre

1

Oui. Juste nouveau dans l'autre contexte et faites ce dont vous avez besoin. Si le CoreDbContext est dans un autre projet, vous devrez le référencer.

protected override void Seed(Module1DbContext context) 
{ 
    // get some data from the current context you want to use for seeding 
    var someItemFromM1 = context.FooBar.FirstOrDefault(fb => fb.Id == myID); 
    if (someDataFromM1 != null) 
    { 
     using (var coreContext = new CoreDbContext()) 
     { 
      // Using AddOrUpdate which is designed for seeding, but you could just use standard update code 
      coreContext.SystemStatuses.AddOrUpdate(
       ss => ss.Code, // Unique field to check so duplicate not added 
       new SystemStatus 
       { 
        Code = someItemFromM1.Code, 
        Description = someItemFromM1.Description 
       }); 
      coreContext.SaveChanges(); 
     } 
    } 
} 
+0

Merci, Steve! Je n'ai pas pensé à ça, haha –