Estoy trabajando en un nuevo proyecto que necesita utilizar Linq To SQL
. Se me ha pedido que cree una clase Linq to SQL
genérica o reutilizable que se puede usar para ejecutar procedimientos almacenados.Crear reutilizable Linq a SQL para procedimientos almacenados
En ADO.Net
yo sabía cómo hacer esto con sólo pasar de una serie de lo que quería ejecutar y pude pasar en diferentes cadenas para cada consulta que necesito para funcionar:
SqlCommand cmd = new SqlCommand("myStoredProc", conn); // etc, etc
estoy luchando con cómo crear algo similar en Linq To SQL
, si es posible. Creé un archivo .dbml
y agregué mi procedimiento almacenado. Como resultado, puedo devolver los resultados utilizando el código de abajo:
public List<myResultsStoreProc> GetData(string connectName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.myResultsStoreProc();
return query.ToList();
}
El código funciona pero ellos quieren que cree un método que devolverá procedimiento almacenado lo que digo para que se ejecute. He buscado en línea y hablé con colegas acerca de esto y no he tenido éxito en encontrar una manera de crear clases de proceso almacenadas reutilizables.
Entonces, ¿hay alguna manera de crear una clase Linq to SQL
reutilizable para ejecutar procesos almacenados?
Editar:
Lo que estoy buscando es que si hay una manera de hacer algo como lo siguiente?
public List<string> GetData(string connectName, string procedureName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.procedureName();
return query.ToList();
}
He revisado la MSDN docs en Linq To Sql
y estos se muestra la tabla de la IEnumerable
:
IEnumerable<Customer> results = db.ExecuteQuery<Customer>(
@"select c1.custid as CustomerID, c2.custName as ContactName
from customer1 as c1, customer2 as c2
where c1.custid = c2.custid"
);
Estoy buscando algo muy genérico, donde puedo enviar en un valor de cadena de la almacenada proc que quiero ejecutar Si esto no es posible, ¿hay alguna documentación sobre por qué no se puede hacer de esta manera? Tengo que demostrar por qué no podemos pasar un valor de cadena del nombre del procedimiento para ejecutar en Linq To Sql
¿Es necesario ejecutar procedimientos almacenados que puede que no haya modelados en el archivo .dbml? ¿Y desea devolver entidades que están mapeadas en su .dbml? – CodingGorilla
lo más probable es que estén mapeados en el archivo .dbml, pero supongo que podría haber un caso en el que no fue – Taryn
. Esta no es la forma en que se supone que debe usarse LINQ to SQL. Estás trabajando contra el sistema. Intente trabajar como debe ser usado. – usr