2013-04-16 7 views
11

Sto cercando di trovare la sintassi corretta per eseguire il seeding di un database con i dati di test. Ho una chiave esterna per la mia tabella dei prodotti. È la categoria. Ho seminato il database con i valori per le categorie, ma sono rimasto bloccato su come aggiungere tale relazione al prodotto. Ho provato in questo modo inutilmente.Semina un database con codice First Entity Framework - Sintassi di chiave esterna

context.Categories.AddOrUpdate(x => x.Name, 
    new Category 
    { 
     Name = "Fruit" 
    }); 

context.Products.AddOrUpdate(x => x.Name, 
    new Product 
    { 
     Name = "Cherries", 
     Description = "Bing Cherries", 
     Measure = "Quart Box", 
     Price = 1.11M, 
     Category = context.Categories.FirstOrDefault(x => x.Name == "Fruit") 
    } 
}); 

Qualcuno può indicarmi la giusta direzione?

+0

Fornire la classe del prodotto. Nella classe prodotto è necessario avere il campo chiave esterna in Categoria (ID_Categoria). Puoi assegnare il valore category_id. – Saanch

risposta

23

Ho scoperto che per eseguire la chiave esterna da Categoria è necessario salvare le modifiche apportate al contesto. Quindi sono stato in grado di interrogare il contesto per la categoriaId e salvarlo su ID categoria sul prodotto.

context.Categories.AddOrUpdate(x => x.Name, 
     new Category 
     { 
      Name = "Fruit" 
     }); 

      context.SaveChanges(); 

      context.Product.AddOrUpdate(x => x.Name, 
      new Product { 
Name = "Cherries", 
Description = "Bing Cherries", 
Measure = "Quart Box", 
Price = 1.11M, 
CategoryId = context.Categories.FirstOrDefault(x => x.Name == "Fruit").Id 
}