Pracuję nad nowym projektem, który musi używać Linq To SQL
. Zostałem poproszony o utworzenie ogólnej lub wielokrotnego użytku klasy Linq to SQL
, która może być używana do wykonywania procedur przechowywanych.Tworzenie wielokrotnego użycia Linq do SQL dla procedur przechowywanych
W ADO.Net
wiedziałem, jak to zrobić, po prostu przekazując ciąg co chciałem wykonać i mogłem przejść w różnych ciągów dla każdego zapytania muszę uruchomić:
SqlCommand cmd = new SqlCommand("myStoredProc", conn); // etc, etc
walczę z jak stworzyć coś podobnego w Linq To SQL
, jeśli jest to nawet możliwe. Stworzyłem plik .dbml
i dodałem do niego moją zapisaną procedurę. W rezultacie, można zwrócić wyniki za pomocą poniższego kodu:
public List<myResultsStoreProc> GetData(string connectName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.myResultsStoreProc();
return query.ToList();
}
Kod działa, ale chcą mi tworzyć jedną metodę, która będzie zwracać procedurę przechowywaną powiem cokolwiek go uruchomić. Szukałem w Internecie i rozmawiałem z kolegami o tym i nie udało mi się znaleźć sposobu na stworzenie wielokrotnie przechowywanej klasy proc.
Czy istnieje sposób utworzenia klasy wielokrotnego użytku Linq to SQL
w celu wykonania zapisanych procesów?
Edit:
Co szukam jest, jeśli istnieje sposób, aby zrobić coś jak poniżej?
public List<string> GetData(string connectName, string procedureName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.procedureName();
return query.ToList();
}
I Sprawdziliśmy MSDN docs na Linq To Sql
a te pokazują tabelę w 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"
);
szukam czegoś bardzo rodzajowe, gdzie mogę wysłać ciąg znaków zapisany proc, który chcę wykonać. Jeśli nie jest to możliwe, czy istnieje jakaś dokumentacja dotycząca tego, dlaczego nie można tego zrobić w ten sposób? Muszę udowodnić, dlaczego nie możemy przekazać wartość ciągu o nazwie procedury do wykonania w Linq To Sql
Czy trzeba wykonywać procedur przechowywanych, które nie mogły być modelowane w pliku .dbml? I czy chcesz zwrócić jednostki, które są zmapowane w twoim pliku .dbml? – CodingGorilla
najprawdopodobniej zostaną zmapowane w .dbml, ale myślę, że może być przypadek, w którym nie byłby to – Taryn
. Nie jest to sposób, w jaki LINQ do SQL ma być używany. Pracujesz przeciwko systemowi. Spróbuj pracować tak, jak ma być używana. – usr