首页 文章

“MetadataException,指定的Schema无效”

提问于
浏览
1

在这里遇到问题,我正在尝试查询数据库,当我从该查询中选择一些内容时,我收到此错误

指定的架构无效 . 错误:Models.Context.AdaptEntities.ssdl(2,58):错误0172:所有SSDL工件必须以同一个提供程序为目标 . Provider'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工件必须以同一个提供程序为目标 . Provider'MySql.Data.MySqlClient'与之前遇到的'MySql.Data.MySqlClient'不同 . Models.Context.Unitemps.ssdl(2,87):错误0169:所有SSDL工件必须以同一个提供程序为目标 . ProviderManifestToken'2008'与先前遇到的'5.6'不同 .

任何人都知道解决方案吗?

1 回答

  • 0

    问题是您没有针对正确版本的MySQL .

    首先,要根据存储模型(.ssdl)文件中Schema元素的ProviderManifestToken属性中指定的MySQL版本,检查Transact-SQL查询的Entity Framework目标 .

    此版本可能与您连接的实际MySQL版本不同 .

    这是实体框架的已知问题... Taken from here

    “某些数据库行为取决于为数据库设置的兼容级别 . 如果您的ProviderManifestToken属性设置为2005并且您的SQL Server版本是2005,但数据库的兼容级别设置为”80“(SQL Server 2000),生成的Transact-SQL将以SQL Server 2005为目标,但由于兼容级别设置,可能无法按预期执行 . 例如,如果ORDER BY列表中的列名与选择器中的列名匹配,则可能会丢失排序信息 .

    解决方法:打开Entity Framework .edmx文件并手动更改ProviderManifestToken . 编译后,这应该更改ssdl文件中指定的清单标记(用于脱机) .

相关问题