1

我在两个表之间创建了多对多关系

现在,每当我将数据添加到一个表时,由 DbContext 自动创建的表MoviesHashTags保持为空。

也许我不明白这两个表之间的联系,但是有没有一种特定的方法可以将数据添加到一个表中,并且它也会添加到 MoviesHashTags 表中?

例子:

我正在向 HashTags 表添加一个新的 HashTag: 当我调用Add()SaveChanges()时,此 HashTag 包含电影 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>();
} 

表标签:

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

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

数据库上下文:

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 回答