これはすべてリファクタリング可能なので、状況全体にアプローチするより良い方法があれば教えてください。急に言葉足らずになってしまいました、すみません。
私は映画データベースを作成しており、 、Movies
、Genres
およびの 3 つのテーブルがありMovieToGenre
ます。テーブルを作成しました。Genre
テーブルにデータを入力するために、 aを aMtG
に関連付けようとしています。これは 1 対多の関係であると思います。そのため、次のようなものが含まれます。genre_id
movie_id
movie_id | genre_id
1 56
1 786
2 232
2 656
しかし、私の問題は、そのテーブルを埋めるために、モデルmovie_id
から が必要だということです。をテーブルに追加すると、モデルはそのプロパティをさかのぼって更新するMovie
と仮定しましたMovie
が、テーブルにはデフォルト値である 0が入力されるため、そうではないようです。テーブルは適切な を使用しているため、メソッドにどの映画が何を持っているかを伝えることが問題です。Movies
movie_id
MovieToGenre
movie_id
Movies
movie_id
FillMovieToGenre
movie_id
私が使用している一般的なプロセスは、次のループです。
MVC 自体がインスタンスを選択するため、
Movie
を設定せずにインスタンスを作成します。movie_id
を。
movie = new Movie(data1, data2)
Movie
インスタンスをテーブルに追加を。
db.Movies.Add(movie)
メソッドで 最後の
Movie
インスタンスを使用します。movie_id
FillMovieToGenreTable()
を。
FillMtGTable(movie)
しかし、この時点では、ムービーにはデフォルト以外が含まれていないmovie_id
ため、テーブルには、あるべき場所などでMtG
埋められています。movie_id = 0
movie_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; }
}