将 属性 标记为外键
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 ApplicationUserId
是 ApplicationUser.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 部分。
我正在使用 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 ApplicationUserId
是 ApplicationUser.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 部分。