【发布时间】:2019-10-09 12:32:51
【问题描述】:
我在我的数据库中实现了一对一的关系,但对 FK 对象的引用为空。
我会给你看一些代码,这样更容易解释。
我有以下型号:
用户.cs
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public RefreshToken RefreshToken { get; set; }
}
刷新令牌.cs
public class RefreshToken : Trackable
{
public string Token { get; set; }
public DateTime ExpiresOn { get; set; }
public int UserRef { get; set; }
public User User { get; set; }
}
然后在 onModelCreating 函数中我使用 FluentAPI 定义了以下内容
modelBuilder.Entity<User>()
.HasOne(a => a.RefreshToken)
.WithOne(b => b.User)
.HasForeignKey<RefreshToken>(b => b.UserRef);
modelBuilder.Entity<RefreshToken>().HasKey(u => u.UserRef);
数据库中的所有内容都按照我的预期创建。
如果我使用以下代码请求用户
_dbContext.Set<User>().Find(id);
属性 RefreshToken 为空。
我的代码中遗漏了什么?
注意:如果一开始我请求 RefreshToken,后来又请求用户,那么该属性设置正确。
【问题讨论】:
-
关系配置没问题。你缺少的是Loading Related Data。
标签: asp.net-core entity-framework-core one-to-one