删除实体框架中的记录

时间:2014-05-20 04:53:39

标签: c# entity-framework

我现在正在使用实体框架,有一件事让我很恼火,因为要删除一个项目,我们必须找到该对象,然后将其删除。因此,如果我们有记录的 PK ,我们必须得到该对象,然后删除该对象。

前:

 Category category = db.Categories.Find(categoryId);
 db.Categories.Remove(category);
 db.SaveChages();

在这个方法中,我们两次击中数据库.. !!! 有没有办法只用一次数据库删除记录?

对于那些没有信徒的人来说,这是瞥见::)

enter image description here

3 个答案:

答案 0 :(得分:1)

// no trip to database
var rec = db.TableName.Local.SingleOrDefault(r => r.Id == primaryKey);

if (rec == null) throw NotFoundOrWhateverException();

// still no trip to database, if I remember right
db.TableName.Remove(rec);

// trip to database
db.SaveChanges();

答案 1 :(得分:1)

如果您不想获得完整的对象,可以使用它的主键属性尝试这种方式:

Category category  = new Category () {  Id = categoryId   } ; 
db.Categories.Attach(category);
db.DeleteObject(category);
db.Savechanges();

如果您使用的是EF 5,那么您可以使用NUGET使用EntityFramework.Extended Library,并且可以这样做:

db.Categories.Delete(c => c.Id == categoryId);

答案 2 :(得分:0)

[答案结果证明不正确。删除内容以避免混淆他人。保留评论帖子的帖子。]