因此,我试图在 Entity Framework 中实现具有多个结果集的存储过程。
这一切似乎太简单了。
但是,我没有为我的结果集获得任何行(尽管,看来我确实得到了结果集本身)。

我做了什么:

  • 创建了存储过程,该存储过程返回3个结果集
  • 创建表示返回值
  • 的复杂类型
  • 按照Stored Procedures with Multiple Result Sets
  • 手动编辑edmx文件
  • 失败3,并从同一页面尝试了代码版本,但仍然没有返回行。
  • 将代码还原回3。

  • 我的edmx文件(仅相关内容):
      <FunctionImport Name="getGlobalReport2">
        <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
        <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
        <ReturnType Type="Collection(MTModel.GlobalReport2)"/>
        <Parameter Name="regions" Mode="In" Type="String" />
        <Parameter Name="countries" Mode="In" Type="String" />
        <Parameter Name="companySizes" Mode="In" Type="String" />
        <Parameter Name="products" Mode="In" Type="String" />
      </FunctionImport>
    
      <FunctionImportMapping FunctionImportName="getGlobalReport2" FunctionName="MTModel.Store.getGlobalReport2" >
        <ResultMapping>
          <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
        </ResultMapping>
        <ResultMapping>
          <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
        </ResultMapping>
        <ResultMapping>
          <ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
        </ResultMapping>
      </FunctionImportMapping>
    

    我的代码:
    var x = mtEntities.getGlobalReport2(regions, countries, companySizes, products);
    Response.Write(x.Count());
    
    var y = x.GetNextResult<GlobalReport2>();
    Response.Write(y.Count());
    
    var z = x.GetNextResult<GlobalReport2>();
    

    我已经准备好检查的内容:
  • 检查服务器是否按照How can I view live MySQL queries?接收了请求
  • 运行我从服务器获取的查询,并确保它返回结果集和行
  • 调试应用程序以查看在
  • 途中我没有错过任何异常

    调用或应用程序似乎没有问题,只不过没有返回任何行。
    有什么建议么?

    编辑:
    根据您对被覆盖的edmx的评论,只有当我从数据库重新生成模型时,才会发生这种情况,而如果我更新它,则不会发生。
    自从它重新生成模型以来,我别无所求。

    最佳答案

    您是否不认为应该为创建的复杂类型定义一些属性?例如:

    <FunctionImportMapping FunctionImportName="GetGrades"
                           FunctionName="SchoolModel.Store.GetGrades" >
      <ResultMapping>
        <ComplexTypeMapping TypeName="SchoolModel.GradeInfo">
          <ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
          <ScalarProperty Name="CourseID" ColumnName="course_id"/>
          <ScalarProperty Name="StudentID" ColumnName="student_id"/>
          <ScalarProperty Name="Grade" ColumnName="grade"/>
        </ComplexTypeMapping>
      </ResultMapping>
    </FunctionImportMapping>
    

    也检查this

    同样正如Mike在对您的问题的评论中正确指出的那样,如果您以后要更新edmx文件,则如果重新生成该文件,您将迷失于自定义设置。

    关于mysql - Entity Framework -具有多个结果集的存储过程-没有行返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24250849/

    10-13 05:25