В принципе, у меня есть таблица, которая содержит несколько свойств для компании. Это таблица "master", и их идентификатор используется во многих других таблицах. Я в основном нахожу их идентификатор с помощью этого метода:
private Company currentcompany()
    {
        Company cuco = db.Companies.Single(x => x.username == User.Identity.Name);
        return cuco;
    }
Мне нужно дать пользователям возможность обновлять различные данные о себе, хранящиеся в этой таблице, что я сделал отлично, однако я заметил большую дыру в безопасности!
Использование данных Tamper в Firefox (и я думаю, Fidler/многие другие), я мог бы легко изменить скрытый идентификатор и изменить другие данные компаний.
Чтобы остановить это, я добавил следующие строки в действие изменения:
        Company cuco = currentcompany();
        if (company.id != cuco.id)
        {
            return Content("Security Error");
        }
(FYI - Company - это модель /POCO, представляющая компанию, а сама Company - это данные формы.)
После добавления этого, если я отредактирую идентификатор в данных формы, он работает как ожидалось и вызывает "Ошибка безопасности", однако, если нет ошибки, и я продолжаю, я получаю ошибку в вопросе.
"Объект с тем же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.
Я считаю, что это потому, что EF каким-то образом обнаруживает и удерживает первые данные, но я просто не уверен, как их исправить.
Любые советы?
Edit- --update -
Если вы можете понять, чего я пытаюсь достичь, есть ли лучший способ обойти это?