レストランのデータを保持するクラスが2つあります。
Status.cs
public class Status
{
[Required]
public int StatusId { get; set; }
[Required]
[DisplayName("Status")]
public string Name { get; set; }
}
Restaurant.cs
public class Restaurant
{
public int RestaurantId { get; set; }
[Required]
public string Name { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public string Telephone { get; set; }
[Required]
public int StatusId { get; set; }
// NAVIGATION PROPERTIES
public virtual Status Status { get; set; }
}
データベースにデータをシードしようとしています。
まず、ステータステーブルをシードし、次にレストランテーブルをシードします。
var statuses = new List<Status>
{
new Status { Name = "Draft" },
new Status { Name = "Live" },
new Status { Name = "Invisible" },
new Status { Name = "Discontinued" }
};
statuses.ForEach(a => context.Statuses.Add(a));
var restaurants = new List<Restaurant>
{
new Restaurant { Name = "The Restaurant Name", Email = "email@restaurant.com", Telephone = "012345566787", StatusId = 1 }
};
restaurants.ForEach(a=>context.Restaurants.Add(a));
base.seed(context);
StatusId = 1をRestaurantにシードしようとする方法が気に入らないため、これは機能しません。
新しいレストラン内に新しいステータスを作成できることは知っていますが、すでにステータスをデータベースにシードしています。レストランのステータスをドラフトに設定するにはどうすればよいですか?
私は毎回これをしなければなりませんか?
new Restaurant { Name = "The Restaurant Name", Email = "email@restaurant.com", Telephone = "012345566787", StatusId = new Status { Name = "Draft"} }
これにより、ステータスが「ドラフト」の新しいレストランを作成するたびに、ステータステーブルにステータスという新しい行が文字通り生成されませんか?