ObjectContext DeleteObject

时间:2011-12-29 06:43:56

标签: entity-framework c#-4.0

以下是我的工作表。

OrderID  ProductID UnitPrice
1        P001      10
1        P002      11
1        P003      12
2        P001      10   

我使用下面的代码来删除orderID为1的每一行。

void DeleteOrderMaster(int OrderID)
{ 
        Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
        DB.Orders.DeleteObject(_Order);
}

我的问题是什么......

ObjectContext.Table.DeleteObject(entity);

由于我不熟悉DeleteObject函数,我想调用那个函数

DeleteOrderMaster(1)

请告诉我这是否正确?

2 个答案:

答案 0 :(得分:3)

ObjectContext.DeleteObject(object entity)方法删除任何不在分离状态的实体(未设置对象上下文)。

void DeleteOrderMaster(int OrderID)
{ 
        Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
       if(_Order!=null)
         DB.DeleteObject(_Order);
}

答案 1 :(得分:1)

 Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
 db.Orders.DeleteObject(_Order);
 db.SaveChanges();

Remove是DbSet类的一种方法,它只能从作为Entity Framework一部分的DbContext类创建。

修改

可能是我迷惑了自己,这让你很困惑。首先为此道歉。

现在,回到解释,您确实在使用实体框架。您提到的ObjectContext类和我引用的DbContext类都是Entity框架本身的一部分。 ObjectContext类位于 System.Data.Objects 命名空间中,而DbContext位于 System.Data.Entity 命名空间中。

ObjectContext和DbContext 类都提供了查询和处理实体数据作为对象的工具。

现在,何时使用哪一个: -

在使用设计器生成的模型时使用ObjectContext 4.0版,使用带有4.1 Code First模型的DbContext。既然你正在使用设计师,我会说你选择ObjectContext。

再一次混淆了aplologies。希望,现在我已经给出了更好更完整的答案