Asp.net mvc 3 删除ef 4-mvc3中的表格
我试图删除一个实体表 代码如下:Asp.net mvc 3 删除ef 4-mvc3中的表格,asp.net-mvc-3,entity-framework-4,Asp.net Mvc 3,Entity Framework 4,我试图删除一个实体表 代码如下: db.Sessions.SqlQuery("delete table session"); db.SaveChanges(); 这不是删除表。或者做任何事。。 db是从DbContext对象继承的 我找到了解决办法 foreach (var item in db.Sessions) { db.Sessions.Remove(item); } db.SaveChanges(); 但我相信有更好的办法 谢谢。你想把桌子放下吗?如果是这样,您就不能通过S
db.Sessions.SqlQuery("delete table session");
db.SaveChanges();
这不是删除表。或者做任何事。。
db是从DbContext对象继承的
我找到了解决办法
foreach (var item in db.Sessions)
{
db.Sessions.Remove(item);
}
db.SaveChanges();
但我相信有更好的办法
谢谢。你想把桌子放下吗?如果是这样,您就不能通过
SqlQuery
调用来实现,因为顾名思义,该方法严格处理查询
如果您试图删除表中的所有行,则此问题与以下问题重复:
SqlQuery
顾名思义,如果要删除需要其他内容的表,则仅用于执行查询:
使用该属性,您可以执行任何DDL/DML查询:
db.DataBase.ExecuteSqlCommand("drop table sessions");
我还创建了一个repo,它在使用SQL Server 2008的EF4.3.1时运行良好:
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默认使用plurar表名,因此您需要使用会话我不想删除。我想删除/截断。当我尝试它时,它返回:“解析查询时出错。[令牌行编号=1,令牌行偏移量=1,令牌错误=truncate]”您是否尝试过
db.DataBase.ExecuteSqlCommand(“从会话中删除”)代码>?@nir我已经更新了我的答案,对我来说删除和截断都很好。