Linq to Entities удалить

Есть ли встроенный способ удаления с Linq в Entites с использованием Первичного ключа.

В настоящее время мы работаем над созданием хранимой процедуры, называемой DeleteTable (таблица является именем таблицы)

а затем в С# LINQ To Entities я просто создаю контекст. DeleteTable (ID)

Это лучший способ? Какие еще существуют варианты?

Ответ 1

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

using (var context = new MyContext())
{
  var myObject = new MyObject { ID = 3 };
  context.MyObjectSet.Attach(myObject);
  context.MyObjectSet.DeleteObject(myObject);
  context.SaveChanges();
}

Примечание. Это приведет к исключению из того, что вы пытаетесь удалить объект, который не существует. Это подходит только в том случае, если вы уверены, что объект существует.

Примечание 2: предполагается, что вы настроили свои объекты так, чтобы сгенерированная команда удаления не ссылалась на другие поля, кроме ID (что означает отсутствие свойств Timestamp или что-либо подобное, что было бы включено в запрос)

Ответ 2

По умолчанию будет запрашивать объект, а затем выпустить метод .DeleteObject(...).

Ответ 3

Вы можете использовать методы DbSet<T>.Remove(entity) (Версия 4.1, 4.2) или EntitySet<T>.Remove(entity) (Версия 1.0, 4.0):

YourDbContext.Table.Remove(entityObject);

Ответ 4

Я использую для поиска элементов (ов) для удаления, а затем удалять их (их) с помощью метода DeleteObject.

Dim itemToDelete = (From u In db.SOME_TABLE Where u.ID = ID).FirstOrDefault
db.SOME_TABLE.DeleteObject(itemToDelete)
db.SaveChanges()

используйте это внутри блока catch try

Ответ 5

Используйте команду execute для ваших нужд вне контекста, например:

mycontext.ExecuteCommand("DELETE FROM MYTABLE"); 

или

mycontext.ExecuteCommand("TRUNCATE TABLE MYTABLE");

НТН