Reputation: 70327
How do I delete a record by its primary key without first doing a SELECT statement to load the entity?
Upvotes: 14
Views: 10022
Reputation: 7261
Depending on when you're reading this, verify the state of this ticket before implementing any hacks.
Upvotes: 1
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
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