Skip to content

Instantly share code, notes, and snippets.

@mesuttalebi
Created March 12, 2019 11:31
Show Gist options
  • Save mesuttalebi/a82f197aa2f702382df00c1c021dd440 to your computer and use it in GitHub Desktop.
Save mesuttalebi/a82f197aa2f702382df00c1c021dd440 to your computer and use it in GitHub Desktop.
delete range repository
public void DeleteWhere(Expression<Func<T, bool>> filter)
{
var query = DbSet.Where(filter);
string selectSql = query.ToString();
string deleteSql = "DELETE [Extent1] " + selectSql.Substring(selectSql.IndexOf("FROM"));
var internalQuery = query.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Where(field => field.Name == "_internalQuery").Select(field => field.GetValue(query)).First();
var objectQuery = internalQuery.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance).Where(field => field.Name == "_objectQuery").Select(field => field.GetValue(internalQuery)).First() as ObjectQuery;
var parameters = objectQuery.Parameters.Select(p => new SqlParameter(p.Name, p.Value)).ToArray();
_context.Database.ExecuteSqlCommand(deleteSql, parameters);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment