2015-06-06 92 views
0

在開始時,我在sql server中創建了數據庫 接下來,我使用了一個實體數據模型(數據庫優先),並獲取了我在下面嵌入的代碼。如何使用DbContext在許多表中添加記錄

我的數據庫模型:

db model

DbModel.cs

public virtual DbSet <Actor> Actor {get;set;} 
public virtual DbSet <Genre> Genre {get;set;} 
public virtual DbSet <Movie> Movie {get;set;} 

public virtual DbSet <sysdiagrams> sysdiagrams {get;set;} 

protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
    modelBuilder.Entity <Actor>() 
     .HasMany(e = > e.Movie) 
     .WithMany(e = > e.Actor) 
     .Map(m = > m.ToTable("MovieActors").MapLeftKey("ActorID").MapRightKey("MovieID")); 

    modelBuilder.Entity <Genre>() 
     .HasMany(e = > e.Movie) 
     .WithMany(e = > e.Genre) 
     .Map(m = > m.ToTable("MovieGenres").MapLeftKey("GenreID").MapRightKey("MovieID")); 

和actor.cs

[Table("Actor")] 
public partial class Actor { 
    public Actor() { 
     Movie = new HashSet <Movie>(); 
    } 

    public int ID {get;set;} 

    [Required] 
    [StringLength(50)] 
    public string FirstName {get;set;} 

    [Required] 
    [StringLength(50)] 
    public string LastName {get;set;} 

    public virtual ICollection <Movie> Movie {get;set;} 
} 

一切正常,但..

using(var db = new MovieDbModel()) { 
    var movie = new Movie() { 
     Title = "Test", 
     Year = 1990 
    }; 


    db.Actor.Add(new Actor { 
     FirstName = "Al", LastName = "Pacino" 
    }); 

    db.Genre.Add(new Genre { 
     Name = "Action" 
    }); 

    db.SaveChanges(); 

} 

我不知道如何添加演員到電影,因爲db.MovieActors不存在 我在代碼中犯了一個錯誤?

我想要插入到MovieActors(MovieID,ActorID)VALUES(1,1)但如何?

回答

1

你應該影片實體添加到收藏actor.Movie,例如:

using (var db = new MovieDbModel("Server=localhost;Database=test;Trusted_Connection=True;")) 
    { 
     var movie = new Movie() 
     { 
      Title = "Test", 
      Year = 1990 
     }; 

     var actor = new Actor 
     { 
      FirstName = "Al", 
      LastName = "Pacino" 
     }; 

     db.Actor.Add(actor); 

     actor.Movie.Add(movie); 

     db.SaveChanges(); 

    } 
+0

它的工作原理,但如果演員存在,我想只會增加現有的演員ID? – Enteee

+1

然後,您應該從數據庫中獲取actor並執行相同的操作 var actor = db.Actor.Single(x => x.Id == 1); var movie = db.Movie.Single(x => x.Id == 1); movie.Actor.Add(actor); db.SaveChanges(); – Oleg

+0

太好了。感謝您的幫助!! – Enteee

相關問題