使用代码优先实体框架播种数据库 - 外键语法

时间:2013-04-16 07:09:51

标签: entity-framework code-first seeding

我正在尝试找到使用测试数据为数据库设定种子的正确语法。我的产品表有一个外键。这是类别。我已经在数据库中播放了类别的值,但仍坚持如何将该关系添加到产品中。我试过这种方式无济于事。

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

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:27)

我发现为了从Category中完成外键,就是对上下文进行保存更改。然后我能够查询categoryId的上下文并将其保存到产品上的CategoryId。

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