Linq to sql 如何在存储过程返回多个结果集而不使用ORM的情况下使用LINQ to SQL?

Linq to sql 如何在存储过程返回多个结果集而不使用ORM的情况下使用LINQ to SQL?,linq-to-sql,Linq To Sql,与此链接类似,但是我正在进行的项目没有使用LINQ to SQL的ORM组件(我们更喜欢使用它来快速生成数据库的ADO.Net接口) 目前,我们遵循的模式是: var result = myDataContext.GetAllCustomersAndOrders(); 存储过程如下所示: 我需要采取额外的步骤吗?我是否需要扩展生成的dbml或数据上下文部分类文件 希望这是有意义的。。。这有点难以解释,我发现的所有示例都使用dbml的ORM部分(将表拖放到dbml设计器表面)。是的,您可以这样

与此链接类似,但是我正在进行的项目没有使用LINQ to SQL的ORM组件(我们更喜欢使用它来快速生成数据库的ADO.Net接口)

目前,我们遵循的模式是:

var result = myDataContext.GetAllCustomersAndOrders();
存储过程如下所示:

我需要采取额外的步骤吗?我是否需要扩展生成的dbml或数据上下文部分类文件


希望这是有意义的。。。这有点难以解释,我发现的所有示例都使用dbml的ORM部分(将表拖放到dbml设计器表面)。

是的,您可以这样做,但我需要为您的dbml创建一个分部类

因此,如果您的dbml文件是MyLinqToSQL.dbml

  • 打开dbml设计器
  • 将SP拖到设计图面上
  • 拯救
  • 然后按F7
这将创建MyLinqToSQL.cs的部分类

现在

  • 打开自动生成的MyLinqToSQL.designer.cs
  • 复制与SP(要从中返回多个集的SP)同名的访问方法
  • 将其插入刚才创建的MyLinqToSQL.cs中分部类的主体中
  • 将方法的名称更改为至少稍有不同的名称
  • 将返回类型从ISingleResult更改为IMultipleResult
  • 使用System.Data.Linq.Mapping.ResultType属性装饰新类,以定义返回集类型
所有结果集将在单个IQueryable集合中返回

然后,您可以使用反射来确定每个集合项的类型,然后将它们转换为可使用的类型


请参见

多个结果集??或多行(即表格)?多个结果集。Stackoverflow不允许我包含代码。存储过程应该包含两行:返回customer表中的所有行和返回orders表中的所有行。两个select语句,一个存储过程。如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示这些行。工作起来很有魅力(一旦你知道如何使用它),你就不能将两个表之间的连接作为一个结果集返回吗???@marc_s:我宁愿不要,因为那样会返回大量不需要的额外数据(在这种情况下,每行订单数据都会重复客户数据)。另外,我已经知道怎么做了。我更希望找到解决上述问题的方法:从存储过程返回两个或多个结果集。如何使用System.Data.Linq.Mapping.ResultType属性装饰类?使用“[ResultType(typeof(Employee))]”。有关上下文,请参见上面链接中的步骤8。