链接到实体删除

本文关键字:删除 实体 链接 | 更新日期: 2023-09-27 18:18:57

是否有一个内置的方法来删除Linq to entities,使用主键

当前我的工作是创建一个名为DeleteTable (table为表名)的存储过程

然后在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之外不引用任何其他字段(这意味着没有时间戳属性,或将包含在查询中的任何类似内容)

默认的方法是查询出实体,然后发出。deleteobject(…)方法。

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

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