2

我正在使用实体框架来访问我的 MySQL 数据库。该模型是使用 EDMGEN2 生成的,一切正常。我可以做我所有的 linq-to-entity 查询善良......

...直到一段不确定的时间过去,我得到“ProviderManifestToken '5' is different from '5.1' that were received before”错误。为什么我只指定了“5.1”时却遇到了“5”?!!?

让错误停止的唯一方法是重新上传到 edmx 文件(根本没有改变),覆盖之前的文件。那时,应用程序将愉快地向用户提供数据,直到BAM错误发生可能在几个小时后,有时是几天后,我将不得不再次开始追逐我的尾巴。

我已经尝试将 ProviderManifestToken="5.1" 更改为 "MySQL"、"6"、"5" 并且会发生相同的情况:工作一段时间然后出现错误。作为奖励,我在 vb.net webforms 应用程序中只有一个 edmx 文件,所以它被什么弄糊涂了?

我的 edmx 文件的前几行如下所示:

<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
<edmx:Runtime>
<edmx:StorageModels>
<Schema Namespace="v2Model.Store" Alias="Self" Provider="MySql.Data.MySqlClient" ProviderManifestToken="5.1" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2006/04/edm/ssdl">
  <EntityContainer Name="v2ModelStoreContainer">.....

我在 web.config 中的连接字符串如下所示:

<add name="v2Entities" connectionString="metadata=res://*;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;database=v2;uid=username;pwd=password&quot;" providerName="System.Data.EntityClient" />

这已经持续了上个月,我无法找出问题的根源!任何建议都将不胜感激

设置如下:

Windows Server 2003 MySQL v 5.1.38(也在 5.1.36 上试过) Connector/NET 6.1.1.0(也在 6.0.4.0 上试过)

错误如下:

指定的架构无效。错误:MySql.Data.Entity.Properties.SchemaDefinition-5.1.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(7,4):错误 0019:EntityContainer 名称必须是唯一的。已定义名为“Schema”的 EntityContainer。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(336,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Table”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(348,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(374,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.View”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(386,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(412,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Function”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(437,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Procedure”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(447,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Parameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(471,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Constraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(483,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.CheckConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(491,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(500,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKeyConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(509,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKey”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(520,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(535,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableTableConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(548,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(561,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.ConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(574,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.FromForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(587,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(600,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.TableTableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(613,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(626,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.FunctionFunctionParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(639,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ProcedureProcedureParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(652,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(665,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(678,4):错误 0019:模式中的每个类型名称必须是唯一的。类型名称“MySqlClient.ViewConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(691,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-5.0.ssdl(704,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(4,9):错误 0169:所有 SSDL 工件必须针对同一个提供程序。ProviderManifestToken '5' 与之前遇到的 '5.1' 不同。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(7,4):错误 0019:EntityContainer 名称必须是唯一的。已定义名为“Schema”的 EntityContainer。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(391,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Table”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(403,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(429,4):错误 0019:模式中的每个类型名称都必须是唯一的。类型名称“MySqlClient.View”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(441,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(467,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Function”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(492,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Procedure”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(502,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.Parameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(526,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.Constraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(538,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.CheckConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(546,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.ConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(555,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKeyConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(564,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ForeignKey”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(575,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(590,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.TableTableConstraint”已经定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(603,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(616,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(629,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(642,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ToForeignKeyColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(655,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.TableTableColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(668,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(681,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FunctionFunctionParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(694,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ProcedureProcedureParameter”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(707,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewViewConstraint”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(720,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintConstraintColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(733,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.ViewConstraintForeignKey”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(746,4):错误 0019:架构中的每个类型名称都必须是唯一的。类型名称“MySqlClient.FromForeignKeyViewColumn”已定义。

MySql.Data.Entity.Properties.SchemaDefinition-6.0.ssdl(759,4):错误 0019:架构中的每个类型名称必须是唯一的。类型名称“MySqlClient.ToForeignKeyViewColumn”已定义。|

4

4 回答 4

3

我仍然不确定确切的原因,但以下似乎修复了随机崩溃:

改变

metadata=res://*;

EDMX 文件的实际命名空间似乎有效:

metadata=res://MyApplication.Entities;

修复连接字符串的问题现在如下所示:

<add name="v2Entities" connectionString="metadata=res://MyApplication.Entities;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;database=v2;uid=username;pwd=password&quot;" providerName="System.Data.EntityClient"/>
于 2009-09-11T12:54:40.093 回答
1

将连接字符串更改为包含 project/EDMX 命名空间对我有用。但没有“.Entity”。

在我的例子中,我有一个包含多个项目的解决方案,每个项目都有一个引用不同 MySQL 数据库的 EDMX 文件。单独很好,但是在进行测试时一起运行时收到上述错误。

于 2010-01-21T19:23:46.357 回答
1

好的伙计们,在使用实体框架几个月后,MySql Connector 6.2.2 突然出现了这个问题,没有任何问题。

我回顾了我的步骤,我做了两件事,我不知道是什么搞砸了,但它是其中之一,然后我会告诉你我做了什么Web.config来修复它。

我正在使用我一直在开发的应用程序中的 Ajax 工具包和另一个图表工具包。

  1. 在我的应用程序中玩耍时,我尝试使用设计视图中的创建新数据源向导将图表数据绑定到 EntityDataSource。

  2. 我还使用 MySQL.Data 命名空间的基本 ado.net 连接进行了一些数据连接。我的应用程序自始至终都是实体类型的数据集和实体框架。

它可能添加了对执行此操作的 MySql 连接器/网络 API 的附加引用。我有 Windows 7,它在 4 天前备份了我的应用程序,所以我恢复了它并比较了 2 个 Web 配置文件。不同之处在于给我这个错误的应用程序在“程序集”部分的末尾有这些额外的程序集引用:

<add assembly="MySql.Data.Entity, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />
    <add assembly="MySql.Web, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />

我删除了那些,你需要的 MySql 是:

<add assembly="MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />

我希望这能解决某人的问题!

于 2010-04-20T20:03:13.643 回答
0

对于某些人,请清除您的 bin 文件夹,然后重试。对我来说,在部署到服务器 2003 站点时出现此错误。我重命名了一个项目,旧程序集 (.dll) 就在那里。由于连接字符串以“res://*;...”开头,因此它在所有程序集(甚至未加载的程序集)中搜索资源并找到重复项(显然)。

于 2015-03-12T20:43:50.830 回答