これはすべてリファクタリング可能なので、状況全体にアプローチするより良い方法があれば教えてください。急に言葉足らずになってしまいました、すみません。
私は映画データベースを作成しており、 、Movies、Genresおよびの 3 つのテーブルがありMovieToGenreます。テーブルを作成しました。Genreテーブルにデータを入力するために、 aを aMtGに関連付けようとしています。これは 1 対多の関係であると思います。そのため、次のようなものが含まれます。genre_idmovie_id
movie_id | genre_id
1 56
1 786
2 232
2 656
しかし、私の問題は、そのテーブルを埋めるために、モデルmovie_idから が必要だということです。をテーブルに追加すると、モデルはそのプロパティをさかのぼって更新するMovieと仮定しましたMovieが、テーブルにはデフォルト値である 0が入力されるため、そうではないようです。テーブルは適切な を使用しているため、メソッドにどの映画が何を持っているかを伝えることが問題です。Moviesmovie_idMovieToGenremovie_idMoviesmovie_idFillMovieToGenremovie_id
私が使用している一般的なプロセスは、次のループです。
MVC 自体がインスタンスを選択するため、
Movieを設定せずにインスタンスを作成します。movie_idを。
movie = new Movie(data1, data2)Movieインスタンスをテーブルに追加を。
db.Movies.Add(movie)メソッドで 最後の
Movieインスタンスを使用します。movie_idFillMovieToGenreTable()を。
FillMtGTable(movie)しかし、この時点では、ムービーにはデフォルト以外が含まれていないmovie_idため、テーブルには、あるべき場所などでMtG埋められています。movie_id = 0movie_id = 1231後藤1。
tl;dr 最近追加されたモデルの主キーを取得できますか? 追加する必要があるすべての映画をループしているので、新しいクエリを作成するのは悪い考えのようです。その新しいクエリはプロセスを遅くすると思います。
Movieクラスの関連部分で編集
public class Movie
{
[Key]
public int movie_ID { get; set; }
[DisplayName("Title")]
public string title { get; set; }
}
public class Genre
{
[DisplayName("Genre ID")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int genre_ID { get; set; }
[DisplayName("Genre")]
public string genre_string { get; set; }
}
public class MovieToGenre
{
[Key]
public int movie_to_genre_ID { get; set; }
public virtual int movie_ID { get; set; }
public virtual int genre_ID { get; set; }
}