を使用する必要がある新しいプロジェクトに取り組んでいますLinq To SQL
。Linq to SQL
ストアド プロシージャの実行に使用できるジェネリックまたは再利用可能なクラスを作成するように依頼されました。
ADO.Net
実行したいものの文字列を渡すだけでこれを行う方法を知っていたので、実行する必要があるクエリごとに異なる文字列を渡すことができました。
SqlCommand cmd = new SqlCommand("myStoredProc", conn); // etc, etc
Linq To SQL
可能であれば、で似たようなものを作成する方法に苦労しています。.dbml
ファイルを作成し、それにストアド プロシージャを追加しました。その結果、以下のコードを使用して結果を返すことができます。
public List<myResultsStoreProc> GetData(string connectName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.myResultsStoreProc();
return query.ToList();
}
コードは機能しますが、実行するように指示したストアド プロシージャを返すメソッドを 1 つ作成するよう求められています。私はオンラインで検索し、これについて同僚と話しましたが、再利用可能なストアド プロシージャ クラスを作成する方法を見つけることができませんでした。
再利用可能なクラスを作成してLinq to SQL
ストアド プロシージャを実行する方法はありますか?
編集:
私が探しているのは、次のようなことを行う方法があるかどうかです。
public List<string> GetData(string connectName, string procedureName)
{
MyDataContext db = new MyDataContext (GetConnectionString(connectName));
var query = db.procedureName();
return query.ToList();
}
MSDN のドキュメントを確認したところLinq To Sql
、次の表が表示されています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"
);
実行したいストアドプロシージャの文字列値を送信できる、非常に一般的なものを探しています。これが不可能な場合、なぜこのようにできないのかについての文書はありますか? 実行するプロシージャの名前の文字列値を渡せない理由を証明する必要がありますLinq To Sql