我真的需要一些帮助来解决这个问题。当我尝试使用entity Framework添加一个实体时,它总是比需要的多添加一个。
在这里,你可以看到我的数据库后,我添加了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帖子中找到的附加方法,但它仍然不起作用:(。
我也尝试使用上下文文件中的(MarkRequestedMovieAsAdded)方法,而不是RMovies.Add(objekt),但结果相同。
这里会有什么问题呢?
发布于 2016-10-03 02:00:43
只需使用:
context.RMovies.Add(movie);
context.SaveChanges();
发布于 2016-10-03 06:11:31
我设法解决了这个问题。我在Web Api中没有做错任何事情。事实证明,我的Angular2 observable调用出了一个错误,并调用了我的web api两次,因为它是(冷的)和(热的)。
这是关于它的帖子:Angular2 http.post gets executed twice
我所要做的就是在angular2服务中映射之后添加.share()。
https://stackoverflow.com/questions/39819931
复制相似问题