Entity framework ObjectContext删除对象
下面是我的工作台Entity framework ObjectContext删除对象,entity-framework,c#-4.0,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 =>
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)
请告诉我这种方法是否正确?方法删除任何未处于分离状态的实体(未设置对象上下文)
方法删除任何未处于分离状态的实体(未设置对象上下文)
Remove是DbSet类的一种方法,它只能从作为实体框架一部分的DbContext类创建
编辑
也许是我把自己弄糊涂了,结果把你弄糊涂了。首先,我对此表示歉意
现在,回到解释,您确实在使用实体框架。您提到的ObjectContext类和我提到的DbContext类都是实体框架本身的一部分。ObjectContext类位于System.Data.Objects命名空间中,而DbContext位于System.Data.Entity命名空间中
ObjectContext和DbContext类都提供了将实体数据作为对象进行查询和处理的工具
现在,何时使用哪一个:-
当使用设计器生成的模型时,请在版本4.0中使用ObjectContext,并将DbContext与4.1代码优先模型一起使用。因为您使用的是designer,所以我建议您使用ObjectContext
又一次的困惑。希望,现在我给出了一个更好更完整的答案
Remove是DbSet类的一种方法,它只能从作为实体框架一部分的DbContext类创建
编辑
也许是我把自己弄糊涂了,结果把你弄糊涂了。首先,我对此表示歉意
现在,回到解释,您确实在使用实体框架。您提到的ObjectContext类和我提到的DbContext类都是实体框架本身的一部分。ObjectContext类位于System.Data.Objects命名空间中,而DbContext位于System.Data.Entity命名空间中
ObjectContext和DbContext类都提供了将实体数据作为对象进行查询和处理的工具
现在,何时使用哪一个:-
当使用设计器生成的模型时,请在版本4.0中使用ObjectContext,并将DbContext与4.1代码优先模型一起使用。因为您使用的是designer,所以我建议您使用ObjectContext
又一次的困惑。希望,现在我给出了一个更好、更完整的答案,我想,也许你有很好的理由为什么我应该使用删除函数我认为删除函数只支持那些使用DataContext的人,而不支持那些使用ObjectContext的人。我说的对吗?我使用System.Data.Objects.ObjectContext和.edmx文件与数据库交互。这就是为什么需要使用@AVD answer。对象上下文没有Remove()方法。您只需使用
db.Orders.DeleteObject(\u order)
,然后调用db.SaveChanges()
,但我不认为我使用的方式不是实体框架方式。我认为,也许您有充分的理由让我使用删除函数我认为删除函数只支持那些使用DataContext的人,但不适用于使用ObjectContext的用户。我说的对吗?我使用System.Data.Objects.ObjectContext和.edmx文件与数据库交互。这就是为什么需要使用@AVD answer。对象上下文没有Remove()方法。您只需要使用db.Orders.DeleteObject(\u order)
,然后调用db.SaveChanges()
,但我不认为我使用的方式不是实体框架方式。
void DeleteOrderMaster(int OrderID)
{
Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
if(_Order!=null)
DB.DeleteObject(_Order);
}
Order _Order = DB.Orders.SingleOrDefault(x => x.OrderID == OrderID);
db.Orders.DeleteObject(_Order);
db.SaveChanges();