Entity Framework: Как удалить запись по ее первичному ключу? - PullRequest
13 голосов
/ 06 декабря 2011

Как удалить запись по ее первичному ключу, не выполнив сначала инструкцию SELECT для загрузки сущности?

Ответы [ 3 ]

20 голосов
/ 06 декабря 2011

Вы можете использовать фиктивный объект:

var entity = new YourEntity { Key = yourKey };
context.Entities.Attach(entity);
context.Entities.DeleteObject(entity);
context.SaveChanges();
3 голосов
/ 06 декабря 2011

Какую версию Entity Framework вы используете?

Если вы используете Entity Framework 4.1 или выше и класс DbContext, вы можете использовать метод ExecuteSqlCommand () для отправки оператора DELETE в базу данных. См. http://blogs.msdn.com/b/adonet/archive/2011/02/04/using-dbcontext-in-ef-feature-ctp5-part-10-raw-sql-queries.aspx (см. Раздел «Отправка необработанных команд в раздел базы данных»). Это будет выглядеть примерно так:

DbContext ctx = ... get your DbContext somehow...
ctx.Database.ExecuteSqlCommand("DELETE FROM Foo WHERE FooID = 17");

Если вы используете Entity Framework 4.0 и ObjectContext (вместо DbContext), есть аналогичный метод ExecuteStoreCommand (http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecommand.aspx).

1 голос
/ 26 июня 2013

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

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