目标
我想为我的复杂类型获取它们各自的列。
问题
与这个答案不同,marc_s在第(4) (四)部分中,我的复杂类型没有分配给他的数据库列。
举例说明:
在你问之前,我的函数导入是正确的:
那么,我该怎么办?
更新 1
我试图手动将属性添加到我的复杂类型中,但这是最好的方法吗?
更新 2
我想将标量属性自动添加到我的复杂类型中——就像我之前发布的示例一样。
我想为我的复杂类型获取它们各自的列。
与这个答案不同,marc_s在第(4) (四)部分中,我的复杂类型没有分配给他的数据库列。
举例说明:
在你问之前,我的函数导入是正确的:
那么,我该怎么办?
我试图手动将属性添加到我的复杂类型中,但这是最好的方法吗?
我想将标量属性自动添加到我的复杂类型中——就像我之前发布的示例一样。
@chiefGui 我不太了解您的问题,但是当您单击“获取列信息”按钮时,似乎没有任何列。
如果是这个问题,您可以通过在程序中添加命令来解决它。
输入这样的命令。
ALTER PROC ProcName /* ([,parameters] ) */
AS
BEGIN
/* this command you make the difference */
SET FMTONLY OFF
/* other code here */
END
将其放在程序内部的第一行。从 EDMX 中删除该过程,再次添加并再次尝试导入。您将获得程序返回的所有列。所以 de 一步一步地运作良好。
如果这不是您想要的答案,请添加评论,以便我为您提供帮助。
已编辑
发生这种情况是因为 EF 尝试获取列标题而不获取结果数据。如果您的程序具有高度复杂性,则 EF 将只能获取信息,前提是您的代码设置为在运行前检查结构。
您是否注意到字段名称旁边的“不支持”标题?这是因为 MySql 连接器不能从存储过程结果集中读取数据类型。这是 MySQL 网络连接器中的一个错误,因为它永远存在。解决方法是创建一个具有相同两列的表(在您的示例中),在将存储过程导入 EDMX 之前导入该表,当您导入存储过程时,在“添加函数导入”对话框中,选择“实体”选项而不是复杂类型,并映射到该表。