关于c#:删除表中的所有实体

Delete all entities in a table

我想删除所有表(使用Entity Framework 4+的所有实体)的内容(仅限数据,但不包括结构和外键。)。 如何才能做到这一点?
我在Visual Studio 2010中使用SQLCE和Entity框架。

1
entities.ExecuteStoreCommand("DELETE FROM TABLENAME");

以上查询不会删除所有行。 后来,我也会使用一个喜欢的地方

1
entities.ExecuteStoreCommand("DELETE FROM TABLENAME WHERE COL1=0");


您可以使用EntityFramework.Extended库来执行批量删除。 以下是它的样子:

1
2
//delete all users where FirstName matches
context.Users.Delete(u => u.FirstName =="firstname");

既然你想要删除所有内容,你可以像这样使用它:

1
2
//delete all users
context.Users.Delete(u => u.UserId >= 0);

你可以从nuget或他们的Github下载软件包:https://github.com/loresoft/EntityFramework.Extended

我突然想到你可能遇到删除问题,因为你需要在删除时启用级联。 如果您使用EF的代码优先方法,您可以这样做:

1
2
3
4
5
6
7
8
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

    modelBuilder.Entity<User>()
        .HasOptional(a => a.UserDetail)
        .WithOptionalDependent()
        .WillCascadeOnDelete(true); // <-- add this to the code-first model builder.
}


在SQL中,您可以使用TRUNCATE TABLENAME,但如果您有外键,则必须将键计数设置为0,然后截断,然后再次将keycount设置为1:

1
2
3
"SET FOREIGN_KEY_CHECKS = 0;"
"TRUNCATE TABLE TALBENAME;"
"SET FOREIGN_KEY_CHECKS = 1;"

要么

1
2
"ALTER TABLE TABLENAME;"
"DROP CONSTRAINT FK_Name;"