EF6 MySQL StrongTypingException当列不是PK时 [英] EF6 MySQL StrongTypingException When Column is not PK

查看:144
本文介绍了EF6 MySQL StrongTypingException当列不是PK时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在使用MySql和Entity FrameWork与VS 2013这些工具已安装:




  • MySql Server 5.7.8

  • MySql WorkBench 6.3。

  • Visual Studio 1.2.4的MySql

  • 连接器/ NET 6.9。

  • VS 2013 Ultimate

  • 通过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:Laconversiónespecificada no esválida。
en
Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()
--- Fin del seguimiento de la pila de laexcepcióninterna --- en Microsoft .Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()
en
Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties(IList 1
列,IList
1个错误,列表 1& keyColumns,列表 1& excludedColumns,
列表 1& invalidKeyTypeColumns)en
Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList
1
columns,Boolean& needsDefiningQuery)zh
Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable 1
tableDetailsRows,EntityRegister entityRegister,IList
1
entitySetsForRe adOnlyEntityTypes,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)zh
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设置,列表
1个错误)

en
Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBui lderSettings
设置,IVsUtils vsUtils,ModelBuilderEngineHostContext
hostContext)'。 La carga de los metadatos desde la base de datostardó
00:00:00.4029113。


我们已经证明,如果我们将所有单列列为主键一切正常,当一列不是主键时,会发生问题,列的类型无关。



我没有找到任何人



非常感谢您阅读我的问题



敬意

解决方案

实体框架(6.1.3)和MySQL服务器(5.7)



解决问题是,


  1. 打开服务(services.msc)并重新启动MySQL57服务。

  2. 在MySQL中执行以下命令。



    使用<<数据库名称>>
    设置全局optimizer_switch ='derived_merge = OFF';


  3. 更新.edmx。

    li>


We are using MySql and Entity FrameWork with VS 2013 those are the tools installed:

  • MySql Server 5.7.8
  • MySql WorkBench 6.3.
  • MySql for Visual Studio 1.2.4
  • Connector/NET 6.9.
  • VS 2013 Ultimate
  • Entity FrameWork 6.1.3 installed via NuGet

We have imported the necesary libraries into the project MySQLWeb, MySQL.Data, Mysql.Data.Emtity.EF6

We created a schema with MySQLWorkBench with a simple table like this:

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:

'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(IList1 columns, IList1 errors, List1& keyColumns, List1& excludedColumns, List1& invalidKeyTypeColumns) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList1 columns, Boolean& needsDefiningQuery) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable1 tableDetailsRows, EntityRegister entityRegister, IList1 entitySetsForReadOnlyEntityTypes, DbObjectType objectType) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable1 tableDetailsRowsForTables, IEnumerable1 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(List1 errors) en Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, ModelBuilderSettings settings, List1 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.

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)

One way to resolve the issue is,

  1. Open Services (services.msc) and restart MySQL57 service.
  2. Execute the following commands in MySQL.

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

  3. Update the .edmx.

这篇关于EF6 MySQL StrongTypingException当列不是PK时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆