开了项目发现没装mysql及mysql connector/.net。下了个最新版本,结果打开vs,进入模型edmx页面就出了这个问题。
刚开始以为是ProviderManifestToken版本的问题,上头写着5.6,改成.net的dll版本后无效。多处查看这个参数的含义才发现这个表示的是mysql的版本号(与sqlserver连接器一致),虽然我没弄明白为什么这个要放里头。
然后网上google,mysql的信息很少,不过有不少是sqllite的,应该差不多。将如下内容添加到web.config里头,错误还是没有解决。当时还是不确定是为什么。
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
多方google后发现很多地方提到是说这个没有在machine.conf里头写。于是决定冒险改一下。备份machine.conf后开始改,将这一句加进去,加到system.data节中的dbproviderfactories节后头:
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
其实我改对了,但没有生效,很郁闷的想了半天出去吃了个饭,回来再看,发现只改了freamwork64目录下头的config,没改freamwork下头的config。于是继续改,改好了后重启vs就可以了。
后来推测为什么web.conf里头不行,我想是由于model那edmx是用vs打开的,不属于项目里头的东西,因此会报错。
不过无论如何,做好了,小记一下,或许会有和我一样找了几个小时的家伙偶尔看到。