2011-12-29 4 views
0

Ниже мой рабочий стол.ObjectContext DeleteObject

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

Я использую ниже код, чтобы удалить все строки (ы), который является идентификатор заказа 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) 

Пожалуйста, дайте мне знать, это правильно или нет?

ответ

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

Удалить это метод класса DbSet, который может быть создан только из класса DbContext, который является частью Entity Framework.

EDIT

Может быть, я путать себя, что в результате спутать вас. Прежде всего, извинения за это.

Теперь, возвращаясь к объяснению, вы действительно используете платформу Entity Framework. Класс ObjectContext, который вы упомянули, и класс DbContext, который я назвал, являются частью самой структуры Entity. Класс ObjectContext находится в пространстве имен System.Data.Objects, тогда как DbContext живет в пространстве имен System.Data.Entity.

Класс ObjectContext и DbContext предоставляет средства для запросов и работы с данными сущности как объектами.

Теперь, когда использование которых: -

Используйте ObjectContext для версии 4.0 при использовании дизайнера генерируется модель и DbContext с 4.1 Код первой модели. Поскольку вы используете конструктор, я бы сказал, что вы идете с ObjectContext.

Еще раз aplologies для путаницы. Надеюсь, теперь я дал лучший и полный ответ.

+0

Я думаю, может быть, у вас есть веские причины, почему я должен использовать функцию удаления –

+0

Я думаю, что удалять функцию только для тех, кто использует DataContext, но не для тех, кто использует ObjectContext. Я прав ? –

+0

Я использую System.Data.Objects.ObjectContext и .edmx файл для взаимодействия с базой данных –

3

ObjectContext.DeleteObject(object entity) метод удалить любой объект, который не находится в отключен состояние (контекст объекта не задан).

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