2013-04-16 16 views
11

テストデータを使用してデータベースにシードする正しい構文を見つけようとしています。私は私の製品テーブルに外部キーを持っています。カテゴリです。カテゴリの値をデータベースに設定しましたが、その関係を製品に追加する方法については固執しています。私は役に立たないこの方法を試みた。コードFirst Entity Frameworkを使用したデータベースのシード - 外部キー構文

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

誰でも正しい方向に向けることができますか?

+0

製品クラスを指定してください。製品クラスでは、外部キー項目をCategory(Category_id)に設定する必要があります。そのcategory_id値を割り当てることができます。 – Saanch

答えて

23

私はカテゴリから外部キーを達成するためには、コンテキストの変更を保存することがわかっています。その後、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 
} 
関連する問題