Я реализовал отношение 1 к 1 в моей базе данных, но ссылка на объект FK пуста.
Я покажу вам некоторый код, поскольку его будет легче объяснить.
У меня есть следующие модели:
User.cs
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public RefreshToken RefreshToken { get; set; }
}
RefreshToken.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 имеет значение null.
Что я что-то упустил в своем коде?
Примечание. Если сначала я запрашиваю RefreshToken, а затем пользователя, то свойство устанавливается правильно.