如何解决将属性标记为外键
我使用 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 ApplicationUserId
是 ApplicationUser.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 configuration、Foreign key、Required and optional relationships 部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。