2009-09-08 78 views
2

我使用实体框架来访问我的MySQL数据库。该模型使用EDMGEN2生成,一切都很好。我可以做我所有的LINQ实体查询善良...MySQL和实体框架随机给出架构指定无效错误

...直到不确定的时间量过去,我得到“ProviderManifestToken'5'不同于早先遇到的'5.1'错误。为什么会遇到“5”开始的时候,我只指定“5.1”?!?

取得错误停止的唯一方法就是重新上传到EDMX文件(该文件没有改变的话),并覆盖前一个。在这一点上,应用程序将愉快地沿着突突提供数据给用户,直到BAM可能出现错误了几个小时后,有时几天后,我将不得不再次开始追我的尾巴。

我试着将ProviderManifestToken =“5.1”更改为“MySQL”,“6”,“5”,并且会发生相同的情况:一段时间后出现错误。作为奖励,我只有那么什么是越来越迷茫了vb.net web表单应用这一个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) 连接器/ 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。参数'已被定义。

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'已被定义。|

回答

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"/> 
+1

我有类似的问题。你能告诉我什么是MyApplication.Entities相关的吗? – 2009-12-09 14:56:54

+0

我猜“MyApplication”是模型的命名空间(.edmx文件)。 “实体”是班级的名称。 – Dasun 2013-05-13 06:42:28

1

更改连接字符串以包含项目/ EDMX命名空间对我有用。但没有“实体”。

在我的情况下,我有一个解决方案与多个项目,每个与一个EDMX文件引用不同的MySQL数据库。个别很好,但是当在测试中一起运行时收到上述错误。

1

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

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

我正在玩Ajax工具包和另一个图表工具包,在我一直在努力的应用程序中。

  1. 虽然在我的应用程序打转转,我想图表数据绑定到EntityDataSource使用create从设计视图中的新数据源向导。

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

它可能已经添加了对MySql连接器/ net apis的额外引用。我有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" /> 

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

0

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