gpt4 book ai didi

mysql - 无法设置 IdentityUser 上的外键

转载 作者:行者123 更新时间:2023-11-29 17:00:43 26 4
gpt4 key购买 nike

我正在尝试使用代码优先方法,使用 .NET Core 2.1 和 Entity Framework Core(由 MySQL 支持)创建一个带有 IdentityUser 外键的新模型。我创建了一个如下所示的模型:

using System;
using Microsoft.AspNetCore.Identity;

namespace Models
{
public class Note
{
public int NoteId { get; set; }

public string NoteText { get; set; }

public string CreatedByUserId { get; set; }
public virtual IdentityUser CreatedByUser { get; set; }
}
}

生成迁移看起来不错,但当我实际尝试运行数据库更新时,我收到“无法添加外键约束”错误。

这是失败的 SQL 语句:

ALTER TABLE `Notes` ADD CONSTRAINT `FK_Notes_AspNetUsers_CreatedByUserId` FOREIGN KEY (`CreatedByUserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE NO ACTION;

这会产生稍微更详细的错误消息:“引用的表中没有索引,其中引用的列显示为第一列。”

但是,当我查看 AspNetUsers 表上的索引时,我可以看到 Id 是主键,应该对其进行索引。这是表的创建语句:

CREATE TABLE aspnetusers
(
Id VARCHAR(127) NOT NULL
PRIMARY KEY,
AccessFailedCount INT NOT NULL,
ConcurrencyStamp LONGTEXT NULL,
Email VARCHAR(256) NULL,
EmailConfirmed BIT NOT NULL,
LockoutEnabled BIT NOT NULL,
LockoutEnd DATETIME(6) NULL,
NormalizedEmail VARCHAR(256) NULL,
NormalizedUserName VARCHAR(256) NULL,
PasswordHash LONGTEXT NULL,
PhoneNumber LONGTEXT NULL,
PhoneNumberConfirmed BIT NOT NULL,
SecurityStamp LONGTEXT NULL,
TwoFactorEnabled BIT NOT NULL,
UserName VARCHAR(256) NULL,
CONSTRAINT UserNameIndex
UNIQUE (NormalizedUserName)
)
ENGINE = InnoDB
CHARSET = latin1;

CREATE INDEX EmailIndex
ON aspnetusers (NormalizedEmail);

我还尝试使用 NormalizedUserNameNormalizedEmail 代替 Id,因为它们似乎都是显示为唯一的索引字段字段在各自的索引中,但我对所有这些字段都收到相同的错误消息。

如何为 IdentityUser 表设置外键?

最佳答案

事实证明,对我来说问题是两个相互引用的表没有使用相同的字符集,因此 MySQL 拒绝设置外键约束。我认为可能是我从 mysqldump 导入了初始数据库,但本地数据库的默认值与 sql 转储的输出不匹配。

关于mysql - 无法设置 IdentityUser 上的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281410/

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