Sto lavorando ad un nuovo progetto che deve utilizzare Linq To SQL
. Mi è stato chiesto di creare una classe Linq to SQL
generica o riutilizzabile che può essere utilizzata per eseguire stored procedure.Creazione di Linq riutilizzabile in SQL per stored procedure
In ADO.Net
sapevo come fare questo da solo di passaggio in una serie di quello che volevo eseguire e ho potuto passare in diverse stringhe per ogni query ho bisogno di correre:
SqlCommand cmd = new SqlCommand("myStoredProc", conn); // etc, etc
sto lottando con come creare qualcosa di simile in Linq To SQL
, se è anche possibile. Ho creato un file .dbml
e aggiunto la mia stored procedure ad esso. Di conseguenza, posso restituire i risultati utilizzando il codice qui sotto:
public List<myResultsStoreProc> GetData(string connectName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.myResultsStoreProc();
return query.ToList();
}
Il codice funziona ma vogliono me per creare un metodo che restituirà tutto ciò stored procedure lo dico a correre. Ho cercato online e ho parlato con i colleghi di questo argomento e non ho avuto successo nel trovare un modo per creare una classe proc memorizzata riusabile.
Quindi c'è un modo per creare una classe riutilizzabile Linq to SQL
per eseguire proc memorizzati?
Edit:
Quello che sto cercando è se c'è un modo per fare qualcosa di simile alla seguente?
public List<string> GetData(string connectName, string procedureName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.procedureName();
return query.ToList();
}
Ho rivisto il MSDN docs su Linq To Sql
e questi sono che mostra la tabella nella 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"
);
Cerco qualcosa di molto generico, dove posso inviare un valore stringa della stored proc che voglio eseguire. Se questo non è possibile, c'è qualche documentazione sul perché non può essere fatto in questo modo? Ho bisogno di dimostrare il motivo per cui non siamo in grado di passare un valore di stringa del nome della procedura da eseguire in Linq To Sql
Avete bisogno di eseguire le stored procedure che non si può avere modellate nel file .dbml? E vuoi restituire entità mappate nel tuo .dbml? – CodingGorilla
molto probabilmente saranno mappati nel .dbml ma suppongo che potrebbe esserci un caso in cui non era – Taryn
Questo non è il modo in cui LINQ to SQL dovrebbe essere usato. Stai lavorando contro il sistema. Prova a lavorare come dovrebbe essere usato. – usr