SqlQuery
as the name implies only for executing queries if you want to drop the table you need something else:
With the use of the DbContext.Database property you can execute any DDL/DML query:
db.DataBase.ExecuteSqlCommand("drop table sessions");
I have also created a repro and it's working fine with EF4.3.1 with SQL Server2008:
using (var db = new EFRepros())
{
db.Sessions.Add(new Session() { Name = "Test1" });
db.Sessions.Add(new Session() { Name = "Test2" });
db.Sessions.Add(new Session() { Name = "Test3" });
db.SaveChanges();
Console.WriteLine(db.Sessions.Count()); // Output: 3
db.Database.ExecuteSqlCommand("delete from sessions");
//db.Database.ExecuteSqlCommand("truncate table sessions"); //this also works
Console.WriteLine(db.Sessions.Count()); // Output: 0
}
Note: EF by default use plurar table names so you need to use sessions.