通过 LINQ-to-SQl 加载数据集
Posted
技术标签:
【中文标题】通过 LINQ-to-SQl 加载数据集【英文标题】:Load DataSet via LINQ-to-SQl 【发布时间】:2011-08-22 15:02:46 【问题描述】:我有一个返回 DataSet 的存储过程。这个存储过程通过实体数据模型在我的 C# 代码中公开。如何在我的代码中获取 DataSet?上下文不断尝试自动生成一组强类型对象。但是,这些对象仅代表第一个结果集。我的 DataSet 中有 4 个结果集。这是我正在使用的代码:
using (DBDataContext context = new DBDataContext())
var myDataSet = context.LoadData(); // Load data is the name of my sproc
// how do I get a DataSet here?
如何通过 LINQ-to-SQL 或 LINQ-to-EntityDataModel 或其他名称获取数据集?
非常感谢您的帮助
【问题讨论】:
How do I fill a DataSet or a DataTable from a LINQ query resultset ? 的可能重复项 不是重复的,因为这个问题是关于如何处理在 LINQ to SQL 中返回具有不同列的多个结果集的存储过程。 DataSet 位是一个红鲱鱼。 【参考方案1】:如果您有多个结果集,那么您需要编写一些代码——但这并不难:
网上有一些例子——例如:
http://blogs.msdn.com/b/dditweb/archive/2008/05/06/linq-to-sql-and-multiple-result-sets-in-stored-procedures.aspx http://www.thinqlinq.com/Post.aspx/Title/Using-LINQ-to-SQL-to-return-Multiple-Results http://www.bing.com/search?setmkt=en-GB&q=linq+to+sql+multiple+result+sets ;)它们主要显示扩展部分数据上下文所需的内容,例如:
<FunctionAttribute(Name:="dbo.GetMultipleSets")> _
<ResultType(GetType(Type_1))> _
<ResultType(GetType(Type_2))> _
Public Function GetMultipleSets() As IMultipleResults
Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo))
Dim results As IMultipleResults = DirectCast(result.ReturnValue, IMultipleResults)
Return results
End Function
或在 C# 中类似于:
[Function("dbo.GetMultipleSets"]
[ResultType(typeof(Type_1))]
[ResultType(typeof(Type_2))]
public IMultipleResults GetMultipleSets()
IExecuteResult result = ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()));
IMultipleResults results = (IMultipleResults)result.ReturnValue;
return results;
希望有帮助
斯图尔特
【讨论】:
以上是关于通过 LINQ-to-SQl 加载数据集的主要内容,如果未能解决你的问题,请参考以下文章