プロパティ名とクラス名を変更して、もう少し読みやすくします。Genre
テーブルの主キー列の名前を のままにしておくとGenreId
、EF Codefirst は外部キー (ムービー内) テーブルを名前Genre_GenreId
!! で作成します。そこで、 Movie クラスの主キー列名を単にID
に変更して、外部キー列を次のように生成するようにしましたGenre_ID
public class Movie
{
public int ID { get; set; }
public String MovieName { get; set; }
public virtual Genre Genres { get; set; }
}
public class Genre
{
public int ID { get; set; }
public String Name { get; set; }
}
UI で、AvailableGenre
レコードを一覧表示するドロップダウンを提供します。ユーザーがフォームを送信したら、このように保存します
using (YourDBContext dbContext = new YourDBContext())
{
Movie movie= new Movie { MovieName = "Read it from UI Please" };
var genr=dbContext.Find(2);
// TO DO : replace 2 by selected value from dropdown in the UI
movie.Genres =genr;
dbContext.Movies.Add(movie);
dbContext.SaveChanges();
}
最初に db コンテキストから Genre オブジェクトをロードし、それをGenres
新しい映画オブジェクトのプロパティとして設定します。このメソッドを使用して、Find
主キーがその関数に渡される値 (この場合は 2) である項目を見つけます。Genre テーブルに ID を持つレコードがあると仮定すると、これにより新しいレコードが movie テーブルに追加GenreID
され、列の値がに設定されます。2
2