EF6 MySql - 密钥的所有部分都必须是不可为空的

时间:2016-07-16 02:35:58

标签: mysql entity-framework-6

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

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

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

这是aspnetusers表的create table脚本:

&#39; aspnetusers&#39;,&#39; CREATE TABLE aspnetusersId varchar(128)NOT NULL,Email varchar(256)DEFAULT NULL,{{ 1}} tinyint(4)DEFAULT NULL,EmailConfirmed varchar(21000)DEFAULT NULL,PasswordHash varchar(21000)DEFAULT NULL,SecurityStamp varchar(21000)DEFAULT NULL,{{1} } tinyint(1)DEFAULT NULL,PhoneNumber tinyint(1)DEFAULT NULL,PhoneNumberConfirmed datetime DEFAULT NULL,TwoFactorEnabled bit(1)DEFAULT NULL,LockOutEndDateUtc int(11) DEFAULT NULL,LockoutEnabled varchar(256)NOT NULL,PRIMARY KEY(AccessFailedCount),KEY UserNameId))ENGINE = InnoDB DEFAULT CHARSET = latin1&#39; < / p>

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

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

设置global optimizer_switch =&#39; derived_merge = off&#39 ;; set optimizer_switch =&#39; derived_merge = off&#39;;