Ошибка Объект с таким же ключом уже существует в ObjectStateManager. с ViewModel
Я знаю, что есть довольно много вопросов к этой ошибке, но я не мог решить мою проблему с ними.
Итак, я получаю ошибку:
InvalidOperationException
Объект с таким же ключом уже существует в ObjectStateManager.
ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.
Я даже не знаю, какой ключ такой же? Могу ли я найти это как-нибудь?
Мой контроллер:
[HttpPost]
public ActionResult Meeting(ViewModel ViewModel)
{
var ALL = db.Sites.Where(p => p.Content.Any(a => a.Date.CompareTo(DateTime.Now) <= 0)).OrderBy(l => l.Customer.Service).ToList();
//Adding informations that arnt added by user
ViewModel.Changing.LastUpdate = DateTime.Now;
ViewModel.Changing.LastUpdaterId = UpdaterID;
Site current = ViewModel.Changing;
if (ModelState.IsValid)
{
db.Entry(current).State = EntityState.Modified; //Here is the error
db.SaveChanges();
}
//...
}
Моя ViewModel
public class ViewModel
{
public managementtool.Models.Site Changing { get; set; }
public int[] AvailableSelected { get; set; }
public int[] RequestedSelected { get; set; }
public string SavedRequested { get; set; }
public List<managementtool.Models.Issue> OpenIssue { get; set; }
public List<managementtool.Models.Issue> ClosedIssue { get; set; }
public managementtool.Models.Site Site { get; set; }
public int ID { get; set; }
}
Буду признателен за помощь.
1 ответ
Решение
К сожалению, я использовал модель сайта в этом действии до этого:
[HttpPost]
public ActionResult Meeting(ViewModel ViewModel)
{
//The Error appears if the following part isnt commented out -->
//var ALL = db.Sites.Where(p => p.Content.Any(a => a.Date.CompareTo(DateTime.Now) <= 0)).OrderBy(l => l.Customer.Service).ToList();
//Adding informations that arnt added by user
ViewModel.Changing.LastUpdate = DateTime.Now;
ViewModel.Changing.LastUpdaterId = UpdaterID;
Site current = ViewModel.Changing;
if (ModelState.IsValid)
{
db.Entry(current).State = EntityState.Modified; //Here is the error
db.SaveChanges();
}
//...
}
Итак, был второй ключ, поэтому ObjectStateManager не мог отслеживать несколько объектов с одним и тем же ключом.