以下是我的工作表。
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)
请告诉我这是否正确?
答案 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。希望,现在我已经给出了更好更完整的答案