数据库
首页 > 数据库> > MySQL不支持OUTER APPLY

MySQL不支持OUTER APPLY

作者:互联网

我正在使用MySQL的Entity Framework.以下查询会导致错误:

var foobar = ctx.ArticleBase.OfType<ActicleSpecial>().Include("CreatedBy.Image.Location").ToList();

错误:“MySQL不支持外部应用”我也在一个不同的查询中得到“MySQL不支持交叉应用”.

我有以下数据模型:
alt text http://i48.tinypic.com/5x4kdc.jpg

除了Image实体有Location实体(一对多关系)命名的Location关系,UserBase有Image关系而不是UserSpecial.

为什么我会收到此错误?如何避免这个错误?可能吗?

解决方法:

如果此错误来自MySQL,则会发生以下两种情况之一:

>您尚未正确配置提供程序.
>您的EF提供商中存在错误.

如果此错误来自您的MySQL EF提供程序,则会发生以下两种情况之一:

>您尚未正确配置提供程序.
>您的EF提供商有限制.

SQL由提供程序生成.您可以通过ProviderManifestToken attribute in EDMX配置特定于服务器版本的SQL生成.这是您告诉提供程序不要使用旧服务器版本不支持的SQL功能的方法.

某些MySQL存储引擎可能支持其他人没有的SQL功能.在这种情况下,提供程序需要使用大多数引擎支持的公共功能子集,或者使用ProviderManifestToken来允许您选择.

但是,有缺陷的提供程序也可能只返回不正确的SQL.如果是这种情况,那么您必须找到更新或避免触及该错误的查询.

更新:根据@ Devart的回答,似乎这是供应商的限制,由于MySQL的限制而设计. EF将生成一个ADO.NET规范命令树.提供者有责任将其转换为SQL.如果EF在CCT中返回交叉/外部应用节点,似乎Devart还没有找到将其转换为MySQL可以处理的SQL的方法.因此要么MySQL不能支持所有EF查询,要么是MySQL专家(不是我!)需要向Devart展示如何生成与MySQL兼容的SQL,它可以正确地返回行以进行交叉/外部应用CCT节点.

标签:mysql,entity-framework,devart
来源: https://codeday.me/bug/20190518/1130570.html