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中,您可以使用
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;" |