Jonathan Allen
Jonathan Allen

Reputation: 70327

Entity Framework: How do I delete a record by its primary key?

How do I delete a record by its primary key without first doing a SELECT statement to load the entity?

Upvotes: 14

Views: 10022

Answers (3)

tne
tne

Reputation: 7261

Depending on when you're reading this, verify the state of this ticket before implementing any hacks.

Upvotes: 1

Ladislav Mrnka
Ladislav Mrnka

Reputation: 364339

You can use dummy object:

var entity = new YourEntity { Key = yourKey };
context.Entities.Attach(entity);
context.Entities.DeleteObject(entity);
context.SaveChanges();

Upvotes: 21

triangle_man
triangle_man

Reputation: 1092

Which version of the Entity Framework are you using?

If you're using Entity Framework 4.1 or above, and using the DbContext class, you can use the ExecuteSqlCommand() method to send a DELETE statement to the database. See http://blogs.msdn.com/b/adonet/archive/2011/02/04/using-dbcontext-in-ef-feature-ctp5-part-10-raw-sql-queries.aspx (look at the Sending Raw Commands to the Database section). This will look something like:

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

If you're using Entity Framework 4.0 and ObjectContext (instead of DbContext) there's a similar ExecuteStoreCommand method (http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecommand.aspx).

Upvotes: 3

Related Questions