2011-07-20 11 views
6

Estoy intentando eliminar un objeto en mi asp.net MVC3/primera aplicación de Entity Framework, pero parece que no tengo las opciones necesarias, ya que aparece una "no contiene una definición para DeleteObject" error. Alguien sabe si me falta una referencia de ensamblaje. Aquí está mi código de repositorio:No se puede llamar a DeleteObject en el marco Entity - ¿falta una referencia de ensamblado?

private dbContext db = new dbContext(); 

public void DeleteAccessDetails(AccessDetails details) 
{ 
    db.DeleteObject(details); //error here as DeleteObject isn't recognised 
} 

Éstos son mis referencias:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using MySite.Models; 
using System.Data; 
using System.Data.Objects; 
using System.Web.Mvc; 
using System.Data.Entity; 

pensé teniendo System.Data.Entity habría sido suficiente para que aparezca DeleteObject, pero IntelliSense apenas se crían a cualquier opción - Disponer única, entrada, SaveChanges y Set

Editar: Aquí también es mi código para acceder al repositorio:

Repository rep = new Repository(); 
AccessDetails paymentUpdate = rep.GetPaymentByID(item.AccessDetailsTableID); 
rep.DeleteAccessDetails(paymentUpdate); 

Edición 2: Aquí es una imagen de mi carpeta de referencias:

enter image description here

Gracias

+0

Bastante, no tengo System.Data.Objects en mi carpeta de referencias. Cuando miré en la sección Agregar referencia (pestaña .NET), no estaba allí. –

Respuesta

23

DbContext no tiene un método DeleteObject(). En lugar de eso, use el método Remove() para borrar el objeto del DbSet, luego guarde los cambios.

dbContext db = new dbContext(); // Arrange the context 

Department dept = db.Departments.Single(p => p.Id == "1"); // Find the item to remove 

db.Departments.Remove(dept); // Remove from the context 

b.SaveChanges(); // Delete from the database 
+0

Eliminar() no funcionará si hay una restricción de clave externa no anulable. – NoRMO

0

Puede utilizar este formato:

context.Entry(temp).State = EntityState.Deleted; 

Eliminar() sólo funcionan en DBContext ..

0

En MVC 5 uso removeRange en lugar de DeleteObject mientras que la supresión de la lista.

RemoveRange();

Cuestiones relacionadas