2015-08-12 14 views
9

Stiamo usando MySql e Entity Framework con VS 2013 quelli sono gli strumenti installati:EF6 MySQL StrongTypingException quando la colonna non è PK

  • MySql Server 5.7.8
  • MySQL Workbench 6.3.
  • MySql per Visual Studio 1.2.4
  • Connettore/NET 6.9.
  • VS 2013 ultimo
  • Entity Framework 6.1.3 installato tramite NuGet

Abbiamo importato le librerie necesary nel MySQLWeb progetto, MySQL.Data, Mysql.Data.Emtity.EF6

Noi creato uno schema con MySQL Workbench con una semplice tabella come questa:

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

il problema che abbiamo è che wuen creiamo il Data Model ADO.net Entity ci collegano diritto di il database ma poi non crea il modello e mostrare il seguente errore:

'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. 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(IEnumerable 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)
en 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 generación del modelo tardó 00:03:36.0692240.

Abbiamo dimostrato che se facciamo tutte le singole colonne come tutto Chiave primaria funziona bene, il problema si verifica quando una colonna non è chiave primaria non importa il tipo della colonna.

Non ho trovato nessuno con lo stesso problema su internet.

La ringrazio molto per aver letto la mia domanda

riguarda

risposta

2

Ecco la versione inglese dell'errore. Essa si applica anche per VS2015 e 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)'. 
+0

Aggiornamento: ora ho provato tutte le versioni precedenti di Entity Framework fino a 5.0.0.0 ed è lo stesso errore. – bluee

4

ho individuato che questo errore appare solo per le connessioni con server MySQL 5.7.8, che è in stato di Release Candidate. Con l'ultima versione stabile 5.6.25 il framework di entità funziona correttamente.

+0

MySql V5.7.9 è in versione GA e il bug non è ancora corretto http://bugs.mysql.com/bug.php?id=79163 – ihebiheb

2

Ho avuto lo stesso problema, l'ho risolto disinstallando mysql server 5.7 x64 e intallig mysql server 5.5 x86.

Spero che aiuta

+0

Ho dovuto eseguire il rollback su 5.6.31 x86 e ora funziona. – elvin

12

Entity Framework (versione 6.1.3) e MySQL Server (5.7)

Un modo per risolvere il problema è,

  1. Aprire Servizi (services.msc) e riavviare il servizio MySQL57.
  2. Esegui i seguenti comandi in MySQL.

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

  3. Aggiornare l'edmx.

+4

non funziona per me –

+0

Ha funzionato per me –

+0

Ha funzionato per me ma ho dovuto riavviare Visual Studio prima di aggiornare l'EDMX. – fharreau

Problemi correlati