【问题标题】:EF6 MySql - All parts of a key must be non-nullableEF6 MySql - 键的所有部分都必须不可为空
【发布时间】:2016-07-16 02:35:58
【问题描述】:

所以这是一个新的错误,我刚刚开始出现,我不知道为什么。当我尝试通过 EF6 添加表时,任何不可为空的字段都会出现以下错误。在我能够添加的表上,如果我以 XML 格式打开 edmx 文件,我可以看到 StorageSection 中每个表的 [Key] 部分包含表中的每个字段。所以这显然是某个地方的错误,但我不确定在哪里。

我做了以下事情: - 在 MySql 中仔细检查了我的数据模型(使用版本 5.7.7) - 卸载并重新安装 Visual Studio 2015 - 卸载并重新安装实体框架(版本 6.1.3) - 使用 Devart dotConnect MySql Pro 试用版(版本 8.6.677.0) - 仔细检查所有 web.config 选项以确保它们正确。

示例错误: 错误 13101:“aspnetusers”类型的关键部分“LockOutEndDateUtc”无效。密钥的所有部分都必须不可为空。 HRSMonitor C:\Users\Kevin\Documents\Visual Studio 2015\Projects\HRSMonitor\HRSMonitor\Models\dbHRS.edmx

这是 aspnetusers 表的创建表脚本:

'aspnetusers', 'CREATE TABLE aspnetusers (Id varchar(128) NOT NULL, Email varchar(256) DEFAULT NULL, EmailConfirmed tinyint(4) DEFAULT NULL, PasswordHash varchar(21000) ) 默认空值,SecurityStamp varchar(21000) 默认空值,PhoneNumbervarchar(21000) 默认空值,PhoneNumberConfirmed tinyint(1) 默认空值,TwoFactorEnabledtinyint(1) 默认空值,LockOutEndDateUtc 日期时间空值, LockoutEnabled bit(1) DEFAULT NULL, AccessFailedCount int(11) DEFAULT NULL, UserName varchar(256) NOT NULL, 主键 (Id), 键 Id (Id)) 引擎=InnoDB 默认字符集=latin1'

任何想法将不胜感激。

【问题讨论】:

  • 您是否已经创建了此表?含义(您的问题含糊不清)该表在物理上是否已经存在?
  • 是的,表已经创建好了。这是针对模型优先的设计。
  • show create table theTableName; edit 发布它来提问(即:不要在下面的评论中倾倒它)

标签: mysql entity-framework-6


【解决方案1】:

发现我的问题,在MySql中,需要运行以下语句然后EF6配合:

设置全局 optimizer_switch='derived_merge=off'; 设置 optimizer_switch='derived_merge=off';

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多