我试图删除一个实体 - 表
这是代码:
db.Sessions.SqlQuery("delete table session");
db.SaveChanges();
这不是删除表。或者做任何事情.. db 继承自 DbContext 对象。
我找到了解决方案
foreach (var item in db.Sessions)
{
db.Sessions.Remove(item);
}
db.SaveChanges();
但我确信有更好的方法。
谢谢。
我试图删除一个实体 - 表
这是代码:
db.Sessions.SqlQuery("delete table session");
db.SaveChanges();
这不是删除表。或者做任何事情.. db 继承自 DbContext 对象。
我找到了解决方案
foreach (var item in db.Sessions)
{
db.Sessions.Remove(item);
}
db.SaveChanges();
但我确信有更好的方法。
谢谢。
SqlQuery
顾名思义,如果您想删除需要其他东西的表,则仅用于执行查询:
通过使用DbContext.Database属性,您可以执行任何 DDL/DML 查询:
db.DataBase.ExecuteSqlCommand("drop table sessions");
我还创建了一个 repro,它在 EF4.3.1 和 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
}
注意:默认情况下 EF 使用复数表名,因此您需要使用sessions。