2013-04-16 15 views
11

Ich versuche, die richtige Syntax zu finden, um eine Datenbank mit Testdaten zu säen. Ich habe einen Fremdschlüssel für meine Produkttabelle. Es ist die Kategorie. Ich habe die Datenbank mit den Werten für Kategorien versehen, merkt aber, wie man diese Beziehung zum Produkt hinzufügt. Ich habe diesen Weg vergeblich versucht.Seeding eine Datenbank mit Code First Entity Framework - Fremdschlüssel-Syntax

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") 
    } 
}); 

Kann mir jemand in die richtige Richtung zeigen?

+0

Bitte geben Sie die Produktklasse an. In der Produktklasse müssen Sie das Fremdschlüsselfeld in der Kategorie (Category_id) haben. Sie können diesen category_id-Wert zuweisen. – Saanch

Antwort

23

Ich fand, dass, um den Fremdschlüssel aus der Kategorie zu erreichen, eine Speicherung Änderungen im Kontext vornehmen. Dann konnte ich den Kontext für die categoryId abfragen und in der CategoryId des Produkts speichern.

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 
} 
Verwandte Themen