我想删除所有表(使用Entity Framework 4+的所有实体)的内容(仅限数据,但不包括结构和外键。)。如何才能做到这一点? 我在Visual Studio 2010中使用SQLCE和Entity框架。
entities.ExecuteStoreCommand("DELETE FROM TABLENAME");
以上查询不会删除所有行。后来,我也会使用像
这样的地方entities.ExecuteStoreCommand("DELETE FROM TABLENAME WHERE COL1=0");
答案 0 :(得分:0)
在SQL中你可以使用TRUNCATE TABLENAME
但如果你有外键,你必须将密钥数设置为0,然后截断,然后再次将keycount设置为1:
"SET FOREIGN_KEY_CHECKS = 0;"
"TRUNCATE TABLE TALBENAME;"
"SET FOREIGN_KEY_CHECKS = 1;"
OR
"ALTER TABLE TABLENAME;"
"DROP CONSTRAINT FK_Name;"
答案 1 :(得分:0)
您可以使用EntityFramework.Extended库来执行批量删除。以下是它的样子:
//delete all users where FirstName matches
context.Users.Delete(u => u.FirstName == "firstname");
因为您要删除所有内容,所以可以像这样使用它:
//delete all users
context.Users.Delete(u => u.UserId >= 0);
您可以从nuget或他们的Github下载该软件包:https://github.com/loresoft/EntityFramework.Extended
我突然想到你可能遇到删除问题,因为你需要在删除时启用级联。如果您使用EF的代码优先方法,您可以这样做:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasOptional(a => a.UserDetail)
.WithOptionalDependent()
.WillCascadeOnDelete(true); // <-- add this to the code-first model builder.
}