Linq to Entities删除

是否有使用主键从Linq to Entites删除的内置方法。

目前正在解决的问题是创建一个名为DeleteTable的存储过程(表是表名)

然后在C#LINQ To Entities中我只做context.DeleteTable(ID)

这是最好的方法吗? 还有哪些其他选择?

如果您不想转到数据库以检索所有对象的字段,则可以创建该类的新实例,将其附加到新上下文,删除该实例并保存更改。 这使EF生成适当的删除命令。

using (var context = new MyContext()) { var myObject = new MyObject { ID = 3 }; context.MyObjectSet.Attach(myObject); context.MyObjectSet.DeleteObject(myObject); context.SaveChanges(); } 

注意:这将抛出您尝试删除不存在的对象的例外。 只有在你确定对象存在的情况下才适用。

注意2:这假设您已设置实体,以便生成的删除命令不引用除ID之外的其他字段(意味着没有Timestamp属性,或者查询中包含的任何类似内容)

默认方式是查询实体,然后发出.DeleteObject(…)方法。

您可以使用DbSet.Remove(entity) (版本4.1,4.2)或EntitySet.Remove(entity) DbSet.Remove(entity) (版本DbSet.Remove(entity) )方法:

 YourDbContext.Table.Remove(entityObject); 

我用来搜索要删除的项目,然后使用DeleteObject方法删除它们(它们)。

 Dim itemToDelete = (From u In db.SOME_TABLE Where u.ID = ID).FirstOrDefault db.SOME_TABLE.DeleteObject(itemToDelete) db.SaveChanges() 

在try catch块中使用它

使用execute命令满足您的需求,例如:

 mycontext.ExecuteCommand("DELETE FROM MYTABLE"); 

要么

 mycontext.ExecuteCommand("TRUNCATE TABLE MYTABLE"); 

HTH