我调用 UPDATE,但添加了新行。为什么这可能?模型中的 ID 是正确的。即使我将纯粹的刷新留在管理器中,它仍然会发生这种情况。 型号:
public class Drink
{
public Drink()
{
ImagesCount = 0;
Hidden = false;
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity), Key()]
public int DrinkId { get; set; }
public string Title { get; set; }
public int Price { get; set; }
public int ImagesCount { get; set; }
public bool Hidden { get; set; }
}
存储库:
public void Update(TEntity entity)
{
dbSet.Update(entity);
context.SaveChanges();
}
经理:
public void SaveDrink(Drink drink)
{
if (drink.DrinkId != 0)
{
drinkRepository.Update(drink);
} else {
drinkRepository.Insert(drink);
}
}
您可以通过ChangeTracker检查实体的状态
public void Update(TEntity entity)
{
// ste breakpoint and check your entity status here
var status = context.ChangeTracker.Entries();
dbSet.Update(entity);
context.SaveChanges();
}
也许您的实体没有被ChangeTracker跟踪,在这种情况下,您需要将实体状态设置为已修改。
DbSet.Attach(entity);
var entry = Context.Entry(entity);
entry.State = System.Data.EntityState.Modified;