Search code examples
entity-frameworkcode-firstseeding

Seeding a Database with Code First Entity Framework - Foreign key syntax


I am trying to find the correct syntax to seed a database with test data. I have a foreign key to my product table. It is the category. I have seeded the database with the values for categories, but stuck on how to add that relationship to the product. I have tried this way to no avail.

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

Can anyone point me in the right direction?


Solution

  • I found that in order to accomplish the foreign key from Category is to do a save changes to the context. Then I was able to query the context for the categoryId and save it to the CategoryId on the product.

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