12

I read that the new Entity Framework will include a method to delete multiple items (Linq to SQL has DeleteAllOnSubmit()) but I can't find the function/method to do that.

Is this in Beta 2 or do I have to make my own?

UPDATE:

This is what I'm using now:

    public void DeleteObjects(IEnumerable<object> objects)
    {
        foreach (object o in objects)
        {
            DeleteObject(o);
        }
        SaveChanges();
    }
1

2 Answers 2

8

EF 4 allows you to execute TSQL statements against an object context:

   using (var context = new EntityFrameworkExampleEntities())
    {       
     var count = 
         context.ExecuteStoreCommand(@"DELETE FROM Companies WHERE [CompanyID]=4");            
    }

See the following blog for details.

http://blogs.microsoft.co.il/blogs/gilf/archive/2009/11/25/execute-t-sql-statements-in-entity-framework-4.aspx

Sign up to request clarification or add additional context in comments.

3 Comments

Is there a drawback to my function?
The drawback would be that all of your objects are held in memory during the removal. If you wanted to delete a large batch of objects that you haven't already loaded from the database, they would all be loaded into the application before they were deleted.
Ick. To quote the article you link to, "This ability should only be used in cases that Entity Framework doesn’t support something that you need." EF does support deleting multiple objects, call DeleteObject() and then SaveChanges() (or do this stackoverflow.com/a/870081/24267).
0

I know this is late, but I found this post and found a simpler solution, that wasn't posted. You can set OnDelete to Cascade in the Association properties. In VS2012 open the edmx file. Click on the association and you'll find the OnDelete in the Properties tab. Then you can use the Remove() method with no triggers or any other special handling.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.