DELETE
statements for each entity. This really becomes a bottleneck when there are a several thousand items. This handy set of extension methods allows convenient and efficient deletion of all entities for a particular type T
. The GetTableName<T>
used function even takes into account table mappings set up with the ModelBuilder
.Thanks to Rul Jarimba on StackOverflow for the
GetTableName<T>
function.
public static void DeleteAllEntities<T>(this DbContext db) where T : class { var adapter = (IObjectContextAdapter)db; var objectContext = adapter.ObjectContext; var sql = string.Format("DELETE FROM {0}", objectContext.GetTableName<T>()); var entityConnection = objectContext.ExecuteStoreCommand(sql); } public static string GetTableName<T>(this ObjectContext context) where T : class { string sql = context.CreateObjectSet<T>().ToTraceString(); Regex regex = new Regex("FROM (?<table>.*) AS"); Match match = regex.Match(sql); string table = match.Groups["table"].Value; return table; }