gpt4 book ai didi

c# - 列不是 PK 时的 EF6 MySQL StrongTypingException

转载 作者:可可西里 更新时间:2023-11-01 06:28:02 27 4
gpt4 key购买 nike

我们在 VS 2013 中使用 MySql 和 Entity FrameWork,这些是安装的工具:

  • MySql 服务器 5.7.8
  • MySql 工作台 6.3。
  • MySql for Visual Studio 1.2.4
  • 连接器/NET 6.9。
  • VS 2013 终极版
  • 通过 NuGet 安装 Entity 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: 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, IList
1 errors, List1& keyColumns, List1& excludedColumns, List1& invalidKeyTypeColumns) en
Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList
1 columns, Boolean& needsDefiningQuery) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable1
tableDetailsRows, EntityRegister entityRegister, IList
1 entitySetsForReadOnlyEntityTypes, DbObjectType objectType) en Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable1
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(List1
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.

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

我没有在互联网上找到有同样问题的人。

非常感谢您阅读我的问题

问候

最佳答案

Entity Framework (版本 6.1.3)和 MySQL 服务器(5.7)

解决该问题的一种方法是,

  1. 打开服务 (services.msc) 并重新启动 MySQL57 服务。
  2. 在 MySQL 中执行以下命令。

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

  3. 更新 .edmx。

关于c# - 列不是 PK 时的 EF6 MySQL StrongTypingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com