我正在开发一个需要使用 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();
}
我已经查阅了关于Linq To Sql
的MSDN文档,其中显示了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
中传递要执行的过程名称的字符串值。