Entity Framework 4: DeleteObject (entity): нужно ли сначала извлекать этот объект? - PullRequest
1 голос
/ 28 октября 2010

Я удалял сущность, основываясь на ее первичном ключе, затем я сделал общий репозиторий. Вот мой текущий метод удаления:

public void Del(E entity) // where E : EntityObject on the class
{   if( entity != null)
        DC.DeleteObject( entity);
    return; 
}

Он работает в веб-приложении MVC 2. Итак, пользователи отправляют значения первичного ключа из сущности для удаления, я создаю новую сущность и отправляю ее в метод Delete. Это извлечет первичный ключ и удалит элемент, используя предложение Where (). Сначала кажется глупым запрашивать базу данных.

Ответы [ 2 ]

4 голосов
/ 28 октября 2010

В EF 4 вам не нужно запрашивать объект для удаления (или обновления), но вам нужно установить первичный ключ и прикрепить его к вашему контексту. Ваш метод будет выглядеть так:

public void Del(E entity) // where E : EntityObject on the class
{   
    if( entity != null)
    {
        DC.Attach(entity);
        DC.DeleteObject( entity);
        DC.SaveChanges();
    }
}

Edit:

Метод DeleteObject может быть вызван для уже удаленных объектов. http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.deleteobject.aspx

1 голос
/ 28 октября 2010

Вам не нужно извлекать его, но вам нужно необходимо присоединить его к контексту, если вы этого не сделаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...