通过LINQ-to-SQl加载DataSet

时间:2011-05-10 16:17:21

标签: c# linq

我有一个返回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或其他任何方式获取DataSet?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您有多个结果集,那么您需要编写一些代码 - 但这并不难:

网上有一些例子 - 例如:

他们主要展示了扩展部分datacontext所需的内容,例如:

    <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;
    }

希望有所帮助

斯图尔特