我正在开发一个需要使用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();
}
该代码有效,但他们希望我创建一种方法,该方法将返回我告诉它运行的任何存储过程。我在网上搜索并与同事讨论过这个问题,但未能找到一种方法来创建可重用的存储过程类。
那么有没有办法创建一个可重用的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