当前位置: 首页 > 面试题库 >

MySQL-实体:表'TableDetails'中列'IsPrimaryKey'的值为DBNull

宦琪
2023-03-14
问题内容

我将 Visual Studio 2013Entity Framework 5 和M ySQL Server
5.7.9结合使用

尝试从数据库创建模型( 或“从数据库更新模型” )时,出现以下消息:

‘System.Data.StrongTypingException:表’TableDetails’中’IsPrimaryKey’列的值为DBNull。-–>
System.InvalidCastException:指定的强制转换无效。

我知道这个问题已经被问过了,但是我没有找到任何解决方案。我也没有降级到MySQL 5.6的选择。

即使对于简单的表,也会出现此问题。

样品表

CREATE TABLE new_table
(
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(45) NOT NULL,
  PRIMARY KEY (id)
) 
ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

如果表仅由“主键”组成,则将按原样创建模型。

编辑: 如果我使两个字段主键都将创建该模型而没有任何错误。

有人对此有任何想法吗?

亲切的问候。

完整的错误堆栈:

由于以下异常而无法生成模型:’System.Data.StrongTypingException:表’TableDetails’中列’IsPrimaryKey’的值为DBNull。-–>
System.InvalidCastException:指定的强制转换无效。在Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey()-内部异常堆栈跟踪的结尾-
在Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey
(),位于Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties(IList
1 columns, IList1错误,列表1& keyColumns, List1和排除的列,列表1& invalidKeyTypeColumns) at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList列1,布尔逻辑needsDefiningQuery)在Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets(IEnumerable的1 tableDetailsRows, EntityRegister entityRegister, IList在Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets
1个entitySetsForReadOnlyEntityTypes,DbObjectType的objectType)(IEnumerable的1 tableDetailsRowsForTables, IEnumerable1个tableDetailsRowsForViews
,在Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.Build(StoreSchemaDetails
storeSchemaDetails)处的Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel()处的EntityRegister
EntityRegister)
.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel(列表1 errors) at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, List1错误),位于Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(EdmxHelper
edmxHelper)”。从数据库加载元数据花费了00:00:00.5856317。


问题答案:

实体框架(版本6.1.3)和MySQL服务器(> = 5.7.6)

解决问题的一种方法是

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.

回复晚了。但是希望它能对某人有所帮助。

谢谢。



 类似资料:
  • 问题内容: 我在MySQL中有一张表。我想将表的列值设置为常量整数。我怎样才能做到这一点? 问题答案: 不幸的是,MySQL不支持SQL检查约束。您可以出于兼容性原因在DDL查询中定义它们,但是它们只会被忽略。您可以创建BEFORE INSERT和BEFORE UPDATE触发器,这些触发器会导致错误或在不满足数据要求时将字段设置为其默认值。 因此,您可以在其中找到解决方法。 样品表: 扳机: 测

  • 我有一个名为User的域对象: 我有相关的DTO(UserDTO),它是 我想使用Dozer从域对象转换为DTO。Profile类有一个属性 我想要的是Dozer为列表中的每个配置文件获取配置文件的id并将其保存在DTO的列表中。我可以做这样的事情吗?我必须使用自定义转换器吗? 这是我的实际映射文件

  • 我有一个mysql数据库表,其中我需要将前缀“35-”添加到某个列/字段()的所有值中,该列/字段的号高于500。因此,例如,我希望productcode值更改为,并且在表的所有其他行中类似。 另外一个问题是,此列是该表的主键,但我试图通过添加一个额外的索引列,将其定义为主键,擦除“ProductCode”上的索引,并尝试以下查询(意图稍后再次将其定义为主索引)来解决这一问题: 我没有收到任何错误

  • 本文向大家介绍在MySQL中为空值和空值的单列实现两个条件,包括了在MySQL中为空值和空值的单列实现两个条件的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以避免显示MySQL列中的空值和空值- 这将产生以下输出-

  • 问题内容: 我有两个桌子,看起来都像 我需要根据每个表中的检查名称复制from 到的值。 此声明有任何提示吗? 问题答案: 除了此答案外,如果您需要根据tableA.value动态更改tableB.value,则可以执行以下操作:

  • 问题内容: 我的数据库中有一个字段,该字段的值为。 是否可以使用逗号作为分隔定界符将其设置为实体的属性? 问题答案: 如果您使用JPA 2.1,则可以创建一个: 您可以在实体中使用此转换器: 对于JPA 2.1之前的版本,您可以手动执行以下操作: 我将其包装在转换器中,因为结果存储在属性中,对该列表所做的任何更改都将写回到数据库中- 因此,我需要一个可更改的列表(我无法在的结果中添加任何内容)。在