问题 MySQL实体框架4.0存储过程字段映射


有没有人在这里使用MySQL与实体框架4.0和存储过程?当我添加SP时,它不会显示我需要输入的任何字段。我也看不到手动添加它们的方法。当我单击“函数导入映射”时,它只是说“在实体设计器模型浏览器上选择一个实体或关联来编辑它的映射”。

任何帮助表示赞赏。我使用的是.NET Connector 6.3.6


6390
2018-03-13 04:38


起源

您会发现使用ExecuteStoreQuery手动调用存储过程并手动提供查询所需的MySQL参数会更加简单。我之前试图将映射强制转换为edmx文件并且它不能很好地发挥作用。 - thaBadDawg
是的,这就是我一直在做的事情。我认为这最终会更新,但现在可行。谢谢 - Anthony Greco
在MySQL连接器中获取一些额外的错误报告可能不会有什么坏处。错误跟踪器不是吗? - thaBadDawg
自从你提出这个问题以来,有什么消息吗? - Sergej Andrejev
我只是手动制作了我的模型并自己运行SQL来执行SP = /。不是我想要的,但它的工作原理 - Anthony Greco


答案:


由于错误#55778(在更新实体数据模型期间省略了存储过程参数),因此无法将MySQL存储过程自动导入实体数据模型。

作为一种解决方法,您可以手动操作创建的.edmx文件(.ssdl,.csdl):

导入如上所述的MySQL存储过程

在模型中搜索存储过程名称(.edmx文件或.ssdl,.csdl文件)

在存储模型(SSDL)中替换:

  <Function Name="GetStudentGrades" Aggregate="false" BuiltIn="false"
            NiladicFunction="false" IsComposable="false"
            ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  </Function>

有:

  <Function Name="GetStudentGrades" Aggregate="false" BuiltIn="false"
           NiladicFunction="false" IsComposable="false"
            ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
    <Parameter Name="StudentID" Type="int" Mode="In" />
  </Function>

在概念模型(CSDL)中替换:

  <FunctionImport Name="GetStudentGrades" EntitySet="StudentGrades" ReturnType=...>
  </FunctionImport>

有:

  <FunctionImport Name="GetStudentGrades" EntitySet="StudentGrades" ReturnType=...>
    <Parameter Name="StudentID" Mode="In" Type="Int32" />
  </FunctionImport>

希望有所帮助! 干杯


10
2018-05-30 14:26



嗨,我想问一下现在这个问题已解决了吗?我们现在可以自动将mysql存储过程导入到实体数据模型中吗? - Aivan Monceller
它似乎还没有修复。我遇到了同样的垃圾 - enorl76
多年后,他们修复了导入存储过程,但只要您返回表或标量数据。没有复杂的类型。我估计这个错误是在六年前或更长时间,他们经常更新连接器,但不确定它们在那里发生了什么变化。自甲骨文收购MySql以来,事情已经过去了。绝望。 - Allen King