Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;MetadataException,指定的架构无效;_C#_Mysql_Entity Framework - Fatal编程技术网

C# &引用;MetadataException,指定的架构无效;

C# &引用;MetadataException,指定的架构无效;,c#,mysql,entity-framework,C#,Mysql,Entity Framework,这里有一个问题,我试图查询一个数据库,当我从该查询中选择某个内容时,我得到了这个错误 指定的架构无效。错误: Models.Context.AdaptEntities.ssdl(2,58):错误0172:All ssdl 工件必须以相同的提供者为目标。提供者 “MySql.Data.MySqlClient”与“MySql.Data.MySqlClient”不同 这是早些时候遇到的 Models.Context.AdaptEntities.ssdl(2,91):错误0169:所有ssdl 工件必须

这里有一个问题,我试图查询一个数据库,当我从该查询中选择某个内容时,我得到了这个错误

指定的架构无效。错误:

Models.Context.AdaptEntities.ssdl(2,58):错误0172:All ssdl 工件必须以相同的提供者为目标。提供者 “MySql.Data.MySqlClient”与“MySql.Data.MySqlClient”不同 这是早些时候遇到的

Models.Context.AdaptEntities.ssdl(2,91):错误0169:所有ssdl 工件必须以相同的提供者为目标。ProviderManifestToken “2008”与之前遇到的“5.6”不同

ssdl(2,54):错误0172:所有ssdl工件 必须以同一提供程序为目标。提供程序“MySql.Data.MySqlClient” 与遇到的“MySql.Data.MySqlClient”不同 早些时候

Models.Context.Unitemps.ssdl(2,87):错误0169:所有ssdl工件 必须以同一提供程序为目标。ProviderManifestToken“2008”是 与前面遇到的“5.6”不同


有人知道一个解决方案吗?

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

首先,检查Transact-SQL查询的实体框架目标是否基于存储模型(.ssdl)文件中Schema元素的属性中指定的MySQL版本

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

这是实体框架的一个已知问题

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


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

如何在您的配置(可能是web.config)文件中设置提供程序?该标记在edmx文件中的何处?它位于实体框架项目中,您必须通过windows资源管理器找到它(您无法在Visual Studio中编辑它),ProviderManifestToken条目应该靠近顶部。