1

これはすべてリファクタリング可能なので、状況全体にアプローチするより良い方法があれば教えてください。急に言葉足らずになってしまいました、すみません。


私は映画データベースを作成しており、 、MoviesGenresおよびの 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

私が使用している一般的なプロセスは、次のループです。

  1. MVC 自体がインスタンスを選択するため、Movieを設定せずにインスタンスを作成します。movie_id

    を。movie = new Movie(data1, data2)

  2. Movieインスタンスをテーブルに追加

    を。 db.Movies.Add(movie)

  3. メソッドで 最後のMovieインスタンスを使用します。movie_idFillMovieToGenreTable()

    を。FillMtGTable(movie)しかし、この時点では、ムービーにはデフォルト以外が含まれていないmovie_idため、テーブルには、あるべき場所などでMtG埋められています。movie_id = 0movie_id = 1231

  4. 後藤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; }
}
4

1 に答える 1

1

変更を保存した後、つまり実行後にEFで

db.Movies.Add(movie)
db.SaveChanges();

EF は、入力された ID を自動的に提供する必要があります。

int movie_id=movie.movie_id;
于 2012-12-06T06:04:42.120 に答える