Soy nuevo en LINQ to SQL y intento crear un Objeto de acceso a datos genérico (DAO) para los básicos Crear, Leer, Actualizar y Destruir (CRUD) métodos para que pueda reutilizar el código. Tuve éxito en la creación de un método genérico que eliminará cualquier entidad mediante el uso del siguiente código, pero me preguntaba si alguien sabe cómo crear un método genérico que seleccionará cualquier entidad mediante un campo Id común que exista en todas las tablas.Cómo crear objetos genéricos de acceso a datos (DAO) Métodos CRUD con LINQ to SQL
/// <summary>
/// Generic method that deletes an entity of any type using LINQ
/// </summary>
/// <param name="entity"></param>
/// <returns>bool indicating whether or not operation was successful</returns>
public bool deleteEntity(Object entity)
{
try
{
DomainClassesDataContext db = new DomainClassesDataContext();
db.GetTable(entity.GetType()).Attach(entity);
db.GetTable(entity.GetType()).DeleteOnSubmit(entity);
db.SubmitChanges();
return true;
}
catch(Exception ex)
{
Console.WriteLine(ex.StackTrace);
return false;
}
}
Estoy bastante seguro de que el mismo golpeteo trabajará para la actualización e inserte y le gustaría tener un método genérico en el GenericDAO que me va a recuperar cualquier entidad (es decir, al cliente, Factura, WorkOrder, etc ...) basado en las entidades Id. Gracias de antemano por las respuestas.
Muchas gracias. Esto funciona perfectamente Solo he usado Hibernate con Java en el pasado y el framework ya estaba en su lugar. Ahora, soy el único desarrollador que trabaja en un proyecto desde cero, así que esta es la primera vez que tengo que escribir mi propia capa de acceso a datos fuera del equipo. Desearía tener suficientes representantes para votar esta solución. Soy nuevo en la comunidad y me aseguraré de votar esto cuando mi representante sea más alto. – Grasshopper
@ Aaron Glade importante para ayudar y bienvenido a Stackoverflow, por cierto: puede marcar la respuesta como aceptada si le resultó útil ver esto: http://stackoverflow.com/faq#howtoask –
@MahmoudGamal gran respuesta. ¿Es obligatorio usar una interfaz? No podemos simplemente definir una sola clase (Repositorio) y desde el método de Acción del controlador Agregar o Actualizar o Eliminar un registro. Gracias – User