簡體   English   中英

EF6 MySQL StrongTypingException當Column不是PK時

[英]EF6 MySQL StrongTypingException When Column is not PK

我們在VS 2013中使用MySql和Entity FrameWork,這些是安裝的工具:

  • MySql Server 5.7.8
  • MySql WorkBench 6.3。
  • MySql for Visual Studio 1.2.4
  • 連接器/ NET 6.9。
  • VS 2013旗艦版
  • 通過NuGet安裝實體FrameWork 6.1.3

我們已將必要的庫導入項目MySQLWeb,MySQL.Data,Mysql.Data.Emtity.EF6

我們使用MySQLWorkBench創建了一個帶有這樣一個簡單表的模式:

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

我們遇到的問題是,我們創建了ADO.net實體數據模型,我們將其連接到數據庫,但之后它不會創建模型並顯示以下錯誤:

'System.Data.StrongTypingException:El Valor de la columna'IsPrimaryKey'de la tabla'TableDetails'es DBNull。 ---> System.InvalidCastException:Lacontraiónespecificadanoesválida。 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)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個錯誤)
cn Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBuilderSettings settings,IVsUtils vsUtils,ModelBuilderEngineHostContext hostContext)'。 La carga de los metadatos desde la base dedatostardó00:00:00.4029113。 Lageneracióndelmodeloardo 00:03:36.0692240。

我們已經證明,如果我們將所有單列作為主鍵一切正常,則當一列不是主鍵時,問題就會發生 ,並且列的類型無關緊要。

我沒有在互聯網上找到任何有同樣問題的人。

非常感謝您閱讀我的問題

問候

實體框架(版本6.1.3)和MySQL服務器(5.7)

解決問題的一種方法是,

  1. 打開服務(services.msc)並重啟MySQL57服務。
  2. 在MySQL中執行以下命令。

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

  3. 更新.edmx。

我已經確定這個錯誤只出現在5.7.8 mysql服務器的連接中,該服務器處於候選發布狀態。 使用最新的穩定版本5.6.25,實體框架可以正常工作。

這是錯誤的英文版本。 它也適用於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)'.

我有同樣的問題,我解決了它卸載mysql服務器5.7 x64和intallig mysql服務器5.5 x86。

我希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM