实体框架在添加
问题描述:
时会一直插入dublicate对象为了解决这个问题,我确实需要一些帮助。当我尝试使用实体框架添加实体时,它会一直添加超过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>();
}
}
这应该是相当两岸FORW因为我只有一张桌子,我要补充。是否尝试过与附加方法,我在另一叠后发现,但它仍然不会工作:(。
必须使用方法(MarkRequestedMovieAsAdded)我在我的上下文文件,而不是RMovies也试过。 ?加入(OBJEKT),但结果相同
可能是什么错在这里
答
我设法解决这个问题,我没有做过在Web任何错误Api。它变成了ou t我的Angular2可观察的调用发生了错误,并且两次调用了我的web api,因为它是(冷)而不是(暖)。
下面是一篇关于它: Angular2 http.post gets executed twice
所有我应该做的是在我angular2服务映射后添加.share()。
那么,你做'context.RMovies.Add(电影);'(前面的附加是无关紧要的)。因此,如果您再次输入与RequestedMovie相同的电影,它将被插入。英孚只会完成你要求它做的工作。 –
我认为它与上下文有关,但我不确定..仍在研究这个!它只运行一次,因为我看到它,但插入两行。 – Mikkel
好吧,所以它似乎只运行一次,但它插入两次。这是什么样的应用程序?哪个进程执行'Execute'方法? –