链接到实体删除
本文关键字:删除 实体 链接 | 更新日期: 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