将 属性 标记为外键

Mark property as foreign key

我正在使用 Microsoft.AspNetCore.Identity 来管理我的 WebApp 中的用户。我推导出一个 ApplicationUser 如下:

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

现在我有了另一个实体,让我们称之为 Player,它由 ApplicationUser.

管理
public string Id { get; set; }

public string ApplicationUserId { get; set; }

我故意不想创建类型为 ApplicationUser 的 属性,并且在从数据库中检索对象时不得不乱用 include 语句。我确实想要一个 属性 来保存主键,然后我用它来按需检索这些对象。

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

你可以通过使用流利的 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 configuration, Foreign key, Required and optional relationships 部分。