在这里遇到问题,我正在尝试查询数据库,当我从该查询中选择某些内容时,我收到此错误
指定的架构无效。错误:
Models.Context.AdaptEntities.ssdl(2,58):错误0172:所有SSDL 工件必须以同一提供商为目标。提供者 'MySql.Data.MySqlClient'与'MySql.Data.MySqlClient'不同 那是早先遇到的。
Models.Context.AdaptEntities.ssdl(2,91):错误0169:所有SSDL 工件必须以同一提供商为目标。 ProviderManifestToken '2008'与之前遇到的'5.6'不同。
Models.Context.Unitemps.ssdl(2,54):错误0172:所有SSDL工件 必须针对同一个提供商。提供者'MySql.Data.MySqlClient' 与遇到的'MySql.Data.MySqlClient'不同 早。
Models.Context.Unitemps.ssdl(2,87):错误0169:所有SSDL工件 必须针对同一个提供商。 ProviderManifestToken'2008'是 不同于之前遇到的'5.6'。
任何人都知道解决方案吗?
答案 0 :(得分:0)
问题在于您没有针对正确版本的MySQL。
首先,根据存储模型(.ssdl)文件中Schema元素的ProviderManifestToken属性中指定的MySQL版本,检查Transact-SQL查询的Entity Framework目标。 / p>
此版本可能与您所连接的实际MySQL的版本不同。
这是Entity Framework的一个已知问题... Taken from here
“某些数据库行为取决于为数据库设置的兼容级别。如果您的ProviderManifestToken属性设置为2005并且您的SQL Server版本是2005,但数据库的兼容级别设置为”80“(SQL Server 2000) ),生成的Transact-SQL将以SQL Server 2005为目标,但由于兼容级别设置,可能无法按预期执行。例如,如果ORDER BY列表中的列名与列中的列名匹配,则可能会丢失排序信息。选择器“。
作为解决方法:打开Entity Framework .edmx文件并手动更改ProviderManifestToken。编译后,应该更改ssdl文件中指定的清单标记(用于脱机)。