Ошибка вставки Entity Framework 4.1 - PullRequest
       61

Ошибка вставки Entity Framework 4.1

1 голос
/ 03 сентября 2011

Я написал общий репозиторий для моих базовых окон, с которыми возникли проблемы. Давайте будем более конкретными, есть небольшой класс poco под названием Unit, как показано ниже:

public class Unit : BaseEntity
    {
        public string Name { get; set; }

        private ICollection<Good> _goods;
        public virtual ICollection<Good> Goods
        {
            get
            {
                if(_goods==null)
                {
                    return new List<Good>();
                }
                return _goods;
            }
            set { _goods = value; }
        }
    }

, который унаследован от базового класса сущности как:

public class BaseEntity 
    {

        public int Id { get; set; }
        public override string ToString()
        {
            return Id.ToString();
        }

    }

и это мой раздел Add универсального класса репозитория:

 public void Add(TEntity entity)
        {
            if (entity == null) return;
            if (Context.Entry(entity).State == EntityState.Detached)
            {
                Context.Set<TEntity>().Attach(entity);
            }
            Context.Set<TEntity>().Add(entity);
            Context.SaveChanges();

        }

перед добавлением новой записи, максимальный идентификатор выбирается из базы данных и помещается в IdTextBox, и вызывается метод добавления базовой формы, который вызывает вышеупомянутый метод добавления базового репозитория. вот проблема, я получаю эту ошибку: «Свойство Id является частью ключевой информации объекта и не может быть изменено». есть также класс mapper, который отображает каждое свойство в соответствующий элемент управления, который прекрасно работает. В чем моя проблема?

Заранее спасибо.

1 Ответ

0 голосов
/ 04 сентября 2011

Я выяснил, что эта проблема возникает из-за возможности автоматического определения изменений, которая была истинной.

...