Это приложение MVC с Entity Framework Code Сначала для ORM и MEF в качестве IoC. Если я отмечаю DbContext
с PartCreationPolicy.Shared
, возникает ошибка, указывающая, что объект уже существует в контейнере каждый раз, когда я пытаюсь выполнить редактирование. Но что, если я просто помечаю DbContext
PartCreationPolicy.NonShared
, чтобы он создавался для каждого запроса? Есть ли ужасное влияние для этого?Является ли NonShared DbContext в MVC плохой практикой?
Update Вот код для сохранения:
Provider IRepository<Provider>.Put(Provider item)
{
if (item.Id == Guid.Empty)
{
item.Id = Guid.NewGuid();
this.Providers.Add(item);
}
else this.Entry<Provider>(item).State = EntityState.Modified;
return item;
}
И это ошибка, когда на Shared
Объект с тем же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с тем же ключом .
Я только что разместил код и сообщение об ошибке. – Vahid
Я думаю, что проблема связана с вашими несколькими объектами с тем же ключом в таблице «Поставщик» –
@BhushanFirake Это невозможно, Code First, используя атрибут '[Key]', будет формировать первичный ключ, который будет ** никогда ** разрешить дубликаты. – mattytommo