1

2 つのテーブル間に多対多の関係を作成しました

1 つのテーブルにデータを追加するたびに、DbContext によって自動作成されたテーブル MoviesHashTags は空のままになります

この 2 つのテーブルの関係が理解できないかもしれませんが、1 つのテーブルにデータを追加する特定の方法はありますか?それは MoviesHashTags テーブルにも追加されますか?

例:

HashTags テーブルに新しい HashTag を追加しています: Add()SaveChanges( ) を 呼び出すと、このハッシュタグにはムービー IDが含まれます。これは、HashTag ID とムービー ID を MoviesHashTags テーブルに追加することを想定しています。

ATM この MoviesHashTags テーブルは空のままです

-------------------------------------------------------------------------

表 映画:

[DataContract]
public class Movie 
{
    [DataMember]
    public long Id { get; set; }
    *
    *
    *
    [DataMember]
    public ICollection<HashTag> HashTagsCollection { get; set; }

public Movie()
{
    HashTagsCollection = new HashSet<HashTag>();
} 

TABLE ハッシュタグ:

[DataContract]
public class HashTag
{
    [DataMember]
    public long HashTagId { get; set; }
    *
    *
    *
    [DataMember]
    public ICollection<Movie> MoviesCollection { get; set; }

    public HashTag()
    {
        MoviesCollection = new HashSet<Movie>();
    }

Dbコンテキスト:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Movie>().
    HasMany(c => c.HashTagsCollection).
    WithMany(p => p.MoviesCollection).
    Map(
        m =>
       {
        m.MapLeftKey("Id");
        m.MapRightKey("HashTagId");
        m.ToTable("MoviesHashTags");
        });
 }
4

1 に答える 1

1

を追加するコードを表示しないのは残念ですHashTag。しかし、うまくいくはずの方法は次のとおりです。

var tag = new HashTag { /* setting properties */ };
var movie = db.Movies.Find(movieId);
movie.HashTagsCollection.Add(tag);
db.SaveChanges();
于 2012-11-20T23:03:13.807 に答える