微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将属性标记为外键

如何解决将属性标记为外键

我使用 Microsoft.AspNetCore.Identity 来管理我的 Web 应用程序中的用户。我得出的 ApplicationUser 如下:

public class ApplicationUser : IdentityUser 
{
    public string TgUserName { get; set; }
}

现在我有一个实体,我们称之为 Player,它由 ApplicationUser 管理。

public string Id { get; set; }

public string ApplicationUserId { get; set; }

我故意不想创建 ApplicationUser 类型的属性,并且在从数据库中检索对象时不得不处理包含语句。我确实希望拥有一个包含主键的属性,然后我可以使用它来按需检索这些对象。

如何告诉 EF Core ApplicationUserIdApplicationUser.Id 的外键。

解决方法

您可以使用 fluent API 来做到这一点。首先,您需要使用适当的 Has / With 调用重载定义关系,然后使用 HasForeignKey 将属性映射为 FK。

在这种特殊情况下(多对一,两端没有导航属性,显式 FK 属性)它应该是这样的:

modelBuilder.Entity<Player>()
    .HasOne<ApplicationUser>() // no reference navigation property
    .WithMany() // no collection navigation property
    .HasForeignKey(e => e.ApplicationUserId) // FK property
    .IsRequired(); // remove this if the relationship is optional

有关详细信息,请参阅官方 EF Core 文档的 Relationships - Manual configurationForeign keyRequired and optional relationships 部分。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。