我是 MySQL 和 Entity Framework 的新手,在将存储过程导入 edmx 文件时遇到了一个问题。在下图中,您可以看到 EDM 类型列列出了我从 SP 返回的所有列,这些列被列为“不支持”。如果我继续并在窗口中单击“确定”,它将生成 Complex 类型类;但是,类文件中将没有任何属性。
有办法解决这个问题吗?我有谷歌和搜索堆栈溢出相当多。我读过的唯一解决方案是手动生成类文件并手动调用 SP,或者手动修改 edmx 文件。
最佳答案
似乎是这里提到的问题 http://bugs.mysql.com/bug.php?id=79180就在一周前。
我直接手动编辑 edmx,将属性添加到自动生成的 ComplexType,并在自动生成的 FunctionImportMapping 部分的返回映射中添加 ScalarProperties。
完成这些手动编辑后,我现在可以使用标准 EF 模型调用我的 SP,我得到所有返回的行和列(下面的示例现在对我有效,在手动更改 edmx 文件之前,所有我回来的是列表中的空对象 - 每行返回一个对象 - 没有数据)
using (var context = new therinksEntities())
{
ObjectResult<getGLDistSection_Result> rdrs = context.getGLDistSection("AIM", "Deferred", "2015-07-01", "2015-09-30");
int i = 0;
foreach (getGLDistSection_Result result in rdrs)
{
NonBlockingConsole.WriteLine(i++ + ":" +
result.glaccount + ":" +
result.posteddate + ":" +
result.customername + ":" +
result.category + ":" +
result.description + ":" +
result.debit + ":" +
result.credit + ":" +
result.balance);
}
}
我正在使用 VS 2015 和包 - EF 6.1.3、MySql.Data 6.9.8、MySql.Data.Entit 6.9.8 MySql 数据库版本 MySql 5.5.46-log
如果需要使用许多 SP,这是一个痛苦的解决方法。但是,通过修改 edmx 并保存和验证......所有正确的代码都与属性一起生成 - 因此无需创建手动类或其他属性。
关于c# - 不支持 MySql EF 6 存储过程导入函数 EDM 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046527/