首页 > 解决方案 > Mysql EF6 C#中如何根据存储过程生成复杂类型

问题描述

我正在尝试通过 Visual Studio 向导生成复杂类型,但是当我尝试调用需要传递参数的存储过程时,向导不允许我传递它们。 在此处输入图像描述

这是我的第一个问题,但这还不是全部,我更改了程序,从它们中删除了传递参数以直接调用,我得到以下信息:

在此处输入图像描述

所以它不会生成复杂类型的字段。我怎么解决这个问题?

标签: c#mysql.netentity-frameworkvisual-studio-2017

解决方案


我可以回答你的第一个问题。在我最近的一个项目中,我也面临同样的问题。这是我解决它的方法。

在 MySQL 中创建一个视图,其中包含您从存储过程返回的相同列名和列类型。检查下面的示例。

存储过程:spGetChartData

BEGIN
    SELECT A.ScAnSection, COALESCE(A.ScAnAnswer1, -1) AS ScAnAnswer1, A.ScAnBaselineFinal
    FROM schooolanswer A
    WHERE A.ScAnAcademicYear = 2018
    AND A.ScAnSchoolId = 10;
END

查看:vwGetChartData

select 'ScAnSection' AS `ScAnSection`,1 AS `ScAnAnswer1`,1 AS `ScAnBaselineFinal`

现在导入实体框架中的存储过程和视图。然后从模型浏览器中,编辑您的存储过程并在“返回集合”部分中选择“实体”。从下拉列表中,选择与您的存储过程对应的视图。

EF 中的存储过程与 MySQL

希望这可以帮助您解决问题


推荐阅读