2012-06-21 6 views
1

Я использую Entity Framework, C# 4.0 и Visual Studio 2010. Мне нужно выполнить простой SQL-запрос, чтобы удалить содержимое четырех таблиц. Запрос содержит:Удаление всех записей из нескольких таблиц с использованием Entity Framework

DELETE FROM dbo.tblMFile 
DELETE FROM dbo.tblMContacts 
DELETE FROM dbo.tblPersonDetails 
DELETE FROM dbo.tblAddresses 

Между некоторыми из таблиц есть внешние ключи.

Кажется, что нет простого способа сделать это.

Со ссылкой на мои замечания по поводу ответа на первый respondant в:

  • Из-за высокой конфиденциального характера данных мне нужен способ, чтобы быстро удалить все содержимое (с требованием и вопросы безопасности)

  • Я новичок в EF и стремится узнать

  • Я использую удалить вместо усечения из-за ограничений внешних ключей, упомянутых выше (также выше SQL является иллюстративным, а не окончательный).

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

  • Люди вежливы, чувствительны и информативны (среди многих других атрибутов). Я стремлюсь быть человеком.

ответ

1

Чтобы добавить к ответу @TomTom. Вы не можете сделать это напрямую с помощью Entity Framework. Но вы можете:

  • создать хранимую процедуру для удаления записей (она также может иметь имя таблицы в качестве параметра)
  • использование ExecuteStoreQueryseesee и написать команду SQL непосредственно
+0

Отличный, полный, краткий ответ. Большое спасибо. –

3

Нет, и это хорошо. Если бы я получал центов каждый раз, когда кто-то пытался злоупотреблять ORM для массовых операций, я был бы самым богатым человеком на планете. ORM не предназначены для группового удаления. Если вы действительно хотите использовать LINQ для выдачи DELETE, используйте BlToolkit, который позволяет вам выражать произвольное довольно стандартное DML без навалом (без усечения) в LINQ.

К тому же, ваш код SQL тоже плох.

Удалить ВСЕ записи?

TRUNCATE TAGBLE, NOT DELETE.

TRUNCATE ТАБЛИЦА tblMFile

В зависимости сколько таблица содержит, что может быть thuosands раз быстрее. В основном из-за того, что он также не регистрирует удаленные данные - просто тот факт, что произошел обрыв.

(и не заставляйте меня съеживаться на то, что может сделать префикс somoene таблицей с «tbl» - вы не говорите «HmnPeter» на свое имя, чтобы указать, что вы человек).

+0

Я могу здесь быть информированным и образованным, а не оскорбленным или покровителем.Комментарии: –

+0

Я могу здесь быть информированным и образованным, а не оскорбленным или покровителем. Комментарии: –

+0

Вы получили информацию и получили образование. Если вам по душе мир любит взорвать ваш дом, может быть, вы параноики? Не мои проблемы. он отвечает вам так приятно прокомментировал и принял как «полный и лаконичный». Симпати говорит, что я прав, о, и есть два небольших момента. Вы знаете определение гиппократа? – TomTom

Смежные вопросы