2009-11-23 11 views
11

He leído que el nuevo Entity Framework incluirá un método para eliminar varios elementos (Linq to SQL tiene DeleteAllOnSubmit()) pero no puedo encontrar la función/método para hacerlo.Entity Framework 4 Multiple Object Delete (RemoveAll)

¿Esto es en Beta 2 o tengo que hacer el mío?

ACTUALIZACIÓN:

Esto es lo que estoy usando ahora:

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

posible duplicado de [eliminación masiva en LINQ a entidades] (http://stackoverflow.com/questions/869209/bulk-deleting-in-linq-to-entities) –

Respuesta

8

EF 4 le permite ejecutar sentencias de TSQL contra un contexto de objeto:

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

ver el blog siguiente para detalles.

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

+0

¿Hay algún inconveniente en mi función? – Omar

+2

El inconveniente sería que todos sus objetos se mantienen en la memoria durante la eliminación. Si desea eliminar un lote grande de objetos que aún no ha cargado desde la base de datos, todos ellos se cargarán en la aplicación antes de que se eliminen. –

+1

Ick. Para citar el artículo al que se vincula, "Esta capacidad solo debe usarse en casos en que Entity Framework no admita algo que usted necesita". EF admite la eliminación de múltiples objetos, llame a DeleteObject() y luego a SaveChanges() (o haga esto http://stackoverflow.com/a/870081/24267). – mhenry1384

0

Sé que es tarde, pero me encontré con este post y encontré una solución más simple, que no fue publicada. Puede configurar OnDelete to Cascade en las propiedades de asociación. En VS2012 abra el archivo edmx. Haga clic en la asociación y encontrará OnDelete en la pestaña Propiedades. Luego puede usar el método Remove() sin desencadenantes o cualquier otro manejo especial.

Cuestiones relacionadas