Пользователь (AskedUser) может задавать много вопросов другим пользователям (Asker).
Пользователи (Asker) могут задавать вопросы другим пользователям (AskedUser).
Поэтому у QuestionModel должен быть внешний ключ для запрашиваемого идентификатора пользователя и внешний ключ для пользователя, который задал вопрос.
Сконструировал ли я свои модели так, как я хочу достичь? Как настроить это, используя свободный API, потому что это не достижимо, используя только аннотации данных.
public class ApplicationUser : IdentityUser<long>
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public string Country { get; set; }
public DateTime BirthDate { get; set; }
public ICollection<QuestionModel> AskedQuestions { get; set; }
}
public class QuestionModel
{
public int Id { get; set; }
public string Content { get; set; }
public bool IsAnswered { get; set; }
public long AskerId { get; set; }
public ApplicationUser Asker { get; set; }
public long AskedUserId { get; set; }
public ApplicationUser AskedUser { get; set; }
}
Это я уже пробовал
builder.Entity<ApplicationUser>()
.HasMany(user => user.AskedQuestions)
.WithOne(q => q.AskedUser)
.HasForeignKey(user => user.AskedUserId)
.HasConstraintName("ForeignKey_User_AskedQuestion")
.HasForeignKey(user => user.AskerId)
.HasConstraintName("ForeignKey_Asker_QuestionAsked")
.IsRequired(true);