简体   繁体   English

EF6 MySQL StrongTypingException当Column不是PK时

[英]EF6 MySQL StrongTypingException When Column is not PK

We are using MySql and Entity FrameWork with VS 2013 those are the tools installed: 我们在VS 2013中使用MySql和Entity FrameWork,这些是安装的工具:

  • MySql Server 5.7.8 MySql Server 5.7.8
  • MySql WorkBench 6.3. MySql WorkBench 6.3。
  • MySql for Visual Studio 1.2.4 MySql for Visual Studio 1.2.4
  • Connector/NET 6.9. 连接器/ NET 6.9。
  • VS 2013 Ultimate VS 2013旗舰版
  • Entity FrameWork 6.1.3 installed via NuGet 通过NuGet安装实体FrameWork 6.1.3

We have imported the necesary libraries into the project MySQLWeb, MySQL.Data, Mysql.Data.Emtity.EF6 我们已将必要的库导入项目MySQLWeb,MySQL.Data,Mysql.Data.Emtity.EF6

We created a schema with MySQLWorkBench with a simple table like this: 我们使用MySQLWorkBench创建了一个带有这样一个简单表的模式:

CREATE TABLE `persona` (
  `idpersona` int(11) NOT NULL,
  `nombre` int(11) DEFAULT NULL,
  PRIMARY KEY (`idpersona`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

The problem we have is that wuen we create the ADO.net Entity Data Model we connect right to the database but then it not creates the model and show the following error: 我们遇到的问题是,我们创建了ADO.net实体数据模型,我们将其连接到数据库,但之后它不会创建模型并显示以下错误:

'System.Data.StrongTypingException: El valor de la columna 'IsPrimaryKey' de la tabla 'TableDetails' es DBNull. 'System.Data.StrongTypingException:El Valor de la columna'IsPrimaryKey'de la tabla'TableDetails'es DBNull。 ---> System.InvalidCastException: La conversión especificada no es válida. ---> System.InvalidCastException:Lacontraiónespecificadanoesválida。 en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey() --- Fin del seguimiento de la pila de la excepción interna --- en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey() en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties(IList 1 columns, IList 1 errors, List 1& keyColumns, List 1& excludedColumns, List 1& invalidKeyTypeColumns) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList 1 columns, Boolean& needsDefiningQuery) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable 1 tableDetailsRows, EntityRegister entityRegister, IList 1 entitySetsForReadOnlyEntityTypes, DbObjectType objectType) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumer en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()--- Fin del seguimiento de la pila delaexcepcióninterna--- en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery .TableDetailsRow.get_IsPrimaryKey()zh_cn Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties(IList 1 columns, IList 1错误,List 1& keyColumns, List 1&excludedColumns,List 1& invalidKeyTypeColumns) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList 1 columns,Boolean&needsDefiningQuery)zh_cn Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable 1 tableDetailsRows, EntityRegister entityRegister, IList 1 entitySetsForReadOnlyEntityTypes,DbObjectType objectType)zh Microsoft .Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumer able 1 tableDetailsRowsForTables, IEnumerable 1 tableDetailsRowsForViews, EntityRegister entityRegister) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.Build(StoreSchemaDetails storeSchemaDetails) en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel() en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel(List 1 errors) en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, ModelBuilderSettings settings, List 1 errors) able 1 tableDetailsRowsForTables, IEnumerable 1 tableDetailsRowsForViews,EntityRegister entityRegister)zh_cn.Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.Build(StoreSchemaDetails storeSchemaDetails)zh_cn.Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel( )en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel(List 1 errors) en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, ModelBuilderSettings settings, List 1个错误)
en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBuilderSettings settings, IVsUtils vsUtils, ModelBuilderEngineHostContext hostContext)'. cn Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBuilderSettings settings,IVsUtils vsUtils,ModelBuilderEngineHostContext hostContext)'。 La carga de los metadatos desde la base de datos tardó 00:00:00.4029113. La carga de los metadatos desde la base dedatostardó00:00:00.4029113。 La generación del modelo tardó 00:03:36.0692240. Lageneracióndelmodeloardo 00:03:36.0692240。

We have proved that if we make all single columns as Primary Key everything works fine, the problem happens when one column is not Primary Key it does not matter the type of the column. 我们已经证明,如果我们将所有单列作为主键一切正常,则当一列不是主键时,问题就会发生 ,并且列的类型无关紧要。

I didn´t find anyone with same problem on internet. 我没有在互联网上找到任何有同样问题的人。

Thank you very much for reading my question 非常感谢您阅读我的问题

regards 问候

Entity Framework (version 6.1.3) and MySQL Server (5.7) 实体框架(版本6.1.3)和MySQL服务器(5.7)

One way to resolve the issue is, 解决问题的一种方法是,

  1. Open Services (services.msc) and restart MySQL57 service. 打开服务(services.msc)并重启MySQL57服务。
  2. Execute the following commands in MySQL. 在MySQL中执行以下命令。

    use <<database name>> set global optimizer_switch='derived_merge=OFF';

  3. Update the .edmx. 更新.edmx。

I have pinpointed that this error appears only to connections with 5.7.8 mysql server which is in release candidate state. 我已经确定这个错误只出现在5.7.8 mysql服务器的连接中,该服务器处于候选发布状态。 With the latest stable version 5.6.25 the entity framework works correctly. 使用最新的稳定版本5.6.25,实体框架可以正常工作。

Here is the english version of the error. 这是错误的英文版本。 It also applies for VS2015 and MySQL.Data 6.9.7 它也适用于VS2015和MySQL.Data 6.9.7

    Unable to generate the model because of the following exception: 'System.Data.StrongTypingException: The value for column 'IsPrimaryKey' in table 'TableDetails' is DBNull. ---> System.InvalidCastException: Specified cast is not valid.
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()
    --- End of inner exception stack trace ---
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties(IList`1 columns, IList`1 errors, List`1& keyColumns, List`1& excludedColumns, List`1& invalidKeyTypeColumns)
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList`1 columns, Boolean& needsDefiningQuery)
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable`1 tableDetailsRows, EntityRegister entityRegister, IList`1 entitySetsForReadOnlyEntityTypes, DbObjectType objectType)
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable`1 tableDetailsRowsForTables, IEnumerable`1 tableDetailsRowsForViews, EntityRegister entityRegister)
    at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.Build(StoreSchemaDetails storeSchemaDetails)
    at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel()
    at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel(List`1 errors)
    at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, ModelBuilderSettings settings, List`1 errors)
    at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBuilderSettings settings, IVsUtils vsUtils, ModelBuilderEngineHostContext hostContext)'.

I had the same problem, I solved it uninstalling mysql server 5.7 x64 and intallig mysql server 5.5 x86. 我有同样的问题,我解决了它卸载mysql服务器5.7 x64和intallig mysql服务器5.5 x86。

I hope it helps 我希望它有所帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM