Linq to Entities删除

mic*_*ael 12 c# linq

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

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

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

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

小智 12

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

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

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

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


Mat*_*ted 5

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