Как я удаляю объект из модели Entity Framework без первой загрузки его?

C ++: как передать функцию члена класса в pthread_create ()?

http://thispointer.com/c-how-to-pass-class -member-function-to-pthread_create /

typedef void * (*THREADFUNCPTR)(void *);

class C { 
   // ...
   void *print(void *) { cout << "Hello"; }
}

pthread_create(&threadId, NULL, (THREADFUNCPTR) &C::print, NULL);

39
задан Tomas Aschan 2 February 2009 в 20:38
поделиться

4 ответа

Стоит знать, что Entity Framework поддерживает как Linq to Entities, так и Entity SQL. Если вы обнаружите, что хотите выполнить удаление или обновление, которое потенциально может повлиять на многие записи, вы можете использовать эквивалент ExecuteNonQuery .

В Entity SQL это может выглядеть так:

   Using db As New HelloEfEntities

        Dim qStr = "Delete " & _
                  "FROM Employee"
        db.ExecuteStoreCommand(qStr)
        db.SaveChanges()
    End Using

В этом примере db - это мой ObjectContext . Также обратите внимание, что функция ExecuteStoreCommand принимает необязательный массив параметров.

19
ответ дан 27 November 2019 в 02:49
поделиться

Извинения заранее, но я должен подвергнуть сомнению Вашу цель.

при удалении объекта, никогда не читая его, затем Вы не можете знать, изменил ли другой пользователь объект, промежуточный время, Вы подтвердили, что хотели удалить объект, и фактические удаляют. В "простом SQL", это было бы похоже на выполнение:

DELETE FROM FOO
WHERE ID = 1234

, Конечно, большинство людей на самом деле не делает этого. Вместо этого они делают что-то как:

DELETE FROM FOO
WHERE ID = 1234
  AND NAME = ?ExpectedName AND...

Дело в том, что удаление должно перестать работать (ничего не делают), если другой пользователь изменил запись тем временем.

С этим, лучшим оператором проблемы, существует два возможных решения при использовании Платформы Объекта.

  1. В Вашем Удалять метод, существующий экземпляр, сравнивают математические ожидания свойств и удаляют, если они - то же. В этом случае Платформа Объекта будет заботиться о записи Оператора удаления, который включает значения свойств.

  2. Запись хранимая процедура, которая принимает и IDE и другие значения свойств, и выполняет это.

4
ответ дан Craig Stuntz 23 September 2019 в 18:18
поделиться

Существует способ имитировать, загружают объект путем перевычисления, это - EntityKey. Это похоже на определенный взлом, но могло бы быть единственным способом сделать это в EF.

статья Blog о Удаление, Не Выбирая

4
ответ дан biozinc 23 September 2019 в 18:18
поделиться

Я нашел это сообщение , который указывает, что действительно нет никакого лучшего способа удалить записи. Данное объяснение состояло в том, что все внешние ключи, отношения и т.д., которые уникальны для этой записи, также удалены, и таким образом, EF должен иметь корректную информацию о записи. Я озадачен тем, почему это не могло быть достигнуто, не загружая данные назад и вперед, но поскольку они не собираются происходить очень часто, я решил (на данный момент), что не обеспокоюсь.

, Если у Вас действительно есть решение этой проблемы, не стесняйтесь сообщать мне =)

8
ответ дан Tomas Aschan 23 September 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: