/ / Entity Framework 4: DeleteObject (entity): Трябва ли първо да извлека този обект? - c #, рамка -4 на предприятието

Рамка на Entity 4: DeleteObject (entity): Трябва ли първо да извлека този обект? - c #, рамка -4 на предприятието

Изтрих един Entity въз основа на неговия първичен ключ, след това направих хранилището си generic.Here е моят текущ начин за изтриване:

public void Del(E entity) // where E : EntityObject on the class
{   if( entity != null)
DC.DeleteObject( entity);
return;
}

Той се изпълнява в уеб приложение за MVC 2. Така че потребителите изпращат стойности на първичен ключ от дадено Entity, за да ги изтрият, създавам нов обект, след което го изпраща на метода Delete. Това ще извлече основния ключ и ще изтрие елемента с клауза Where (). Просто изглежда глупаво да попитате първо базата данни.

Отговори:

4 за отговор № 1

На EF 4 не е нужно да потърсите обекта, който искате да изтриете (или да го актуализирате), но трябва да настроите основния ключ и да го прикачите в контекста си. Вашият метод ще изглежда така:

public void Del(E entity) // where E : EntityObject on the class
{
if( entity != null)
{
DC.Attach(entity);
DC.DeleteObject( entity);
DC.SaveChanges();
}
}

Редактиране:

Методът DeleteObject може да бъде извикан на обекти, които вече са изтрити. http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.deleteobject.aspx


1 за отговор № 2

Не е нужно да го извличате, но вие правя трябва да го прикачите към контекста, ако не го направите.