Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Ошибка при удаление данных из связанных таблиц


Автор: Allexander 25.5.2015, 16:04
Доброго времени суток, Уважаемые форумчане.
На просторах интернета нашел учебную статью по ASP.NET MVC 3 и EntityFramework 4 в которой описывается создание мини интернет магазина. На компьютере у меня установлена Visual Web Developer Express 2013 с проектом MVC 4 с EntityFramework 6.

В данной статье в абстрактном классе реализованы виртуальные методы для работы с данными, 
Если использовать EntityFramework 4 то обращение к данным происходит через System.Data.Objects.ObjectSet и проблем при удаление данных из связанных таблиц не возникает
Код

// Удаление объекта
        public virtual void Delete(T dataObject)
        {
            EntitySet.DeleteObject(dataObject);
            EntitySet.Context.SaveChanges();
        }



Но так как в EntityFramework 6 вместо ObjectSet используется DbSet то необходимо было переписывать код с использованием DbSet. Но при этом возникает ошибка:
"An entity object cannot be referenced by multiple instances of IEntityChangeTracker."
Переделанный код.
Код

DbSet
 //Удаление объекта
        public virtual void Delete(T dataObject)
        {
          using (var dbContextTransaction = p.Database.BeginTransaction())
            {
                try
                {
                   p.Entry(dataObject).State = EntityState.Deleted;  --- тут возникает ошибка
                   p.SaveChanges();

                  dbContextTransaction.Commit();
                }
                catch (Exception)
                {
                    dbContextTransaction.Rollback();
                }
            }
        }


Кто нибудь сталкивался с такой проблемой? Прошу помочь её решить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)