下面是我的工作台。
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)
请告诉我这条路对不对?
发布于 2011-12-29 15:07:50
Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
db.Orders.DeleteObject(_Order);
db.SaveChanges();
Remove是DbSet类的一种方法,它只能从实体框架中的DbContext类创建。
编辑
可能是我把自己搞糊涂了,结果把你搞糊涂了。首先,我为此道歉。
现在,回到解释,您确实在使用实体框架。您提到的ObjectContext类和我提到的DbContext类都是实体框架本身的一部分。ObjectContext类位于System.Data.Objects名称空间中,而DbContext位于System.Data.Entity名称空间中。
ObjectContext和DbContext类都提供了将实体数据作为对象进行查询和处理的工具。
现在,何时使用哪个 :-
当使用设计器生成的模型和具有4.1 Code First模型的DbContext时,请将ObjectContext用于4.0版。既然你使用的是designer,我建议你使用ObjectContext。
再次为造成的混乱道歉。希望,现在我已经给出了一个更好更完整的答案。
发布于 2011-12-29 15:00:46
ObjectContext.DeleteObject(object entity)方法删除任何未处于分离状态的实体(未设置对象上下文)。
void DeleteOrderMaster(int OrderID)
{
Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
if(_Order!=null)
DB.DeleteObject(_Order);
}
https://stackoverflow.com/questions/8664764
复制相似问题