只要基于数据库中的某个ID存在多于X条记录,我想要删除表中的所有记录。同时删除并更新数据库MVC
using(ApplicationDbContext app = new ApplicationDbContext())
{
try
{
var UserImg = app.Images.Where(x => x.UserID == LoggedUserId).Select(s => s.ID).FirstOrDefault();
if (UserImg != null)
{
app.Database.ExecuteSqlCommand("TRUNCATE TABLE [Image] LIMIT 2");
}
else if(UserImg == null)
{
app.Images.Add(img);
}
app.SaveChanges();
return RedirectToAction("Details", "Jobs", new { controller = "JobsController", action = "Details", id = Session["DetailsURL"] });
}
catch (DbEntityValidationException ex)
{
//non-relevant stuff
}
}
关于ExecuteSqlCommand
更精确,我该如何设法保留X记录?因为我想一直保留1张图片UserID
。如果我只是截断它将每次删除所有内容,我不知道如何在这里使用LIMIT
。
基本上我想更新一个新的当前图像,如果有另一种方法我觉得更开放尝试。
Solution:
try
{
foreach (var id in app.Images.Where(x => x.UserID == LoggedUserId).Select(e => e.ID))
{
var entity = new Image { ID = id };
app.Images.Attach(entity);
app.Images.Remove(entity);
}
app.Images.Add(img);
app.SaveChanges();
return RedirectToAction("Details", "Jobs", new { controller = "JobsController", action = "Details", id = Session["DetailsURL"] });
}
你好,我得到这个错误:实体类型DbQuery'1不是当前上下文模型的一部分。您尝试使用EntityState删除。不过,我很久以前就用这个解决方案编辑了我的问题。感谢您的时间和精力。 – Eduard
@Eduard我编辑了一些foreach。这个错误是因为向db.Entry()'db.Entry添加一个集合只接受一个对象,不用于集合/ *对不起,因为错误*/...... 这里我提到了一些条目状态为已删除,之后我添加了一些(一)entriy(s)。然后我要求EF保存所有更改,意味着当代码行“db.SaveChanges()”执行时,整个过程将被执行(包括删除和创建) –