实体框架在添加时不断插入重复的对象

时间:2016-10-02 17:56:09

标签: entity-framework

我真的需要一些帮助才能解决这个问题。当我尝试使用Entity Framework添加实体时,它会不断添加1个以上的实体。

在我添加2部电影后,您可以看到我的数据库。

enter image description here

如你所见,它增加了同一部电影“摇滚”两次。

过去两天一直在调查这个问题,但是没有找到一个不给我例外的解决方案。

代码:

public bool Execute(RequestedMovie movie)
    {
        using (var context = new MoviesContext())
        {
            context.RMovies.Attach(movie);
            context.RMovies.Add(movie);
            context.SaveChanges();
        }

        return true;

    }

型号:

public class RequestedMovie
{
    [Key]
    public int RequestedMoviesID { get; set; }
    public string MovieId { get; set; }
    public string MovieTitle { get; set; }
    public string MovieLink { get; set; }
    public string MovieYear { get; set; }
    public int MovieQuality { get; set; }
    public string Requester { get; set; }
    public bool Status { get; set; }

}

的DataContext:

public class MoviesContext : DbContext, IMoviesContext
{
    public MoviesContext() : base("MoviesContext")
    {

    }

    // DbSet to bookings
    public DbSet<Movie> Movies { get; set; }
    public DbSet<RequestedMovie> RMovies { get; set; }

    public void MarkAsAdded(Movie item)
    {
        Entry(item).State = EntityState.Added;
    }

    public void MarkAsDeleted(Movie item)
    {
        Entry(item).State = EntityState.Deleted;
    }

    public void MarkRequestedMovieAsAdded(RequestedMovie item)
    {
        Entry(item).State = EntityState.Added;
    }

    public void MarkRequestedMovieAsModified(RequestedMovie item)
    {
        Entry(item).State = EntityState.Modified;
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    }
}

这应该是相当紧张的前进,因为我只有一个表,我将添加。尝试过我在另一个Stack帖子中找到的Attach方法,但它仍然不起作用:(。

还尝试使用我的上下文文件中的方法( MarkRequestedMovieAsAdded ),而不是RMovies.Add(objekt),但结果相同。

这里可能有什么问题?

2 个答案:

答案 0 :(得分:1)

只需使用:

    context.RMovies.Add(movie);
    context.SaveChanges();

答案 1 :(得分:0)

我设法解决了这个问题。我没有在Web Api中犯过任何错误。事实证明,我的Angular2可观察调用发出错误,并且两次调用我的web api,因为它是(冷)而不是(暖)。

这是关于它的帖子: Angular2 http.post gets executed twice

我应该做的就是在我的angular2服务中映射后添加.share()。