Я хочу удалить все записи в таблице, если существует больше, чем X записей на основе некоторого ID в базе данных.Удалять и обновлять базу данных одновременно 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 принимает только один объект, не работает с коллекцией/* Извините за ошибку */...... Здесь я упомянул, что некоторые записи записываются как удаленные, и после этого я добавил некоторые (одни) адреса (ов). то я попросил EF сохранить все изменения, означая, что весь процесс будет выполнен (как удаление, так и создание), когда выполняется строка кода «db.SaveChanges()» –