首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除多到多关系中的记录

删除多到多关系中的记录
EN

Stack Overflow用户
提问于 2015-06-10 11:34:51
回答 2查看 55关注 0票数 1

当我删除电影时,我会发现外键错误。我的问题是如何用我想要删除的ID电影从表MovieActor中删除所有记录?在电影桌的最后一部?这是不可能写的代码,会自动这样做时,我删除电影?

Actors.cs

代码语言:javascript
复制
[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; }
    }

Movie.cs

代码语言:javascript
复制
[Table("Movie")]
    public partial class Movie
    {
        public Movie()
        {
            Actors = new HashSet<Actor>();
            Countries = new HashSet<Country>();
            Directors = new HashSet<Director>();
            Genres = new HashSet<Genre>();
            Writers = new HashSet<Writer>();
        }

        public int ID { get; set; }

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

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

        public int Year { get; set; }

        [StringLength(255)]
        public string Description { get; set; }

        public int Lenght { get; set; }

        public string Poster { get; set; }

        public DateTime? DateAdded { get; set; }

        public long? BoxOffice { get; set; }

        public string TrailerLink { get; set; }

        public virtual ICollection<Actor> Actors { get; set; }

    }

Context.cs

代码语言:javascript
复制
 public partial class Context : DbContext
    {

         public Context()
            : base("name=DbModel")
        {
        }


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


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

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 11:44:20

尝尝这个

代码语言:javascript
复制
using(var context = new Context())
{   
    var movie = context.Movies.Single(x=>x.ID == movieID);

    var actors = context.Actors.Where(x=>x.Movie.Any(y=>y.ID == movie.ID));

    foreach(var actor in actors)
    {
        actor.Movies.Remove(movie);
    }

    context.SaveChanges();
}
票数 1
EN

Stack Overflow用户

发布于 2015-06-10 11:51:08

据我所知,这是一个问题,当你建立了一个多对多的关系,因为你不能删除任何东西,因为两者是相互参照。

一个解决方案是制作另一个表(在您的例子中是角色),这将是与演员和电影的一对多的关系。有关更多细节,请查看many-to-many relationship in database design

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30755099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档