我真的需要一些帮助才能解决这个问题。当我尝试使用Entity Framework添加实体时,它会不断添加1个以上的实体。
在我添加2部电影后,您可以看到我的数据库。
如你所见,它增加了同一部电影“摇滚”两次。
过去两天一直在调查这个问题,但是没有找到一个不给我例外的解决方案。
代码:
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),但结果相同。
这里可能有什么问题?
答案 0 :(得分:1)
只需使用:
context.RMovies.Add(movie);
context.SaveChanges();
答案 1 :(得分:0)
我设法解决了这个问题。我没有在Web Api中犯过任何错误。事实证明,我的Angular2可观察调用发出错误,并且两次调用我的web api,因为它是(冷)而不是(暖)。
这是关于它的帖子: Angular2 http.post gets executed twice
我应该做的就是在我的angular2服务中映射后添加.share()。