如何使用 FLUENT 配置此模型关系 API
How to configure this model relationship using FLUENT API
用户(AskedUser)可以有很多其他用户(Asker)提出的问题。
用户(Asker)可以向其他用户(AskedUser)提问。
所以 QuestionModel 应该有询问用户 ID 的外键和询问问题的用户的外键。
我构建的模型是否符合我想要实现的目标?如何使用 fluent 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);
您可以在 QuestionModel
上完成
//Asker relation
builder.Entity<QuestionModel>()
.HasOne(q=> q.Asker)
.Withmany(u => u.AskedQuestions)
.HasForeignKey(q=> q.AskerId)
.HasConstraintName("ForeignKey_Asker_QuestionAsked")
.IsRequired(true);
//Asked relation
builder.Entity<QuestionModel>()
.HasOne(q=> q.AskedUser)
.Withmany()
.HasForeignKey(q=> q.AskeduserId)
.HasConstraintName("ForeignKey_User_AskedQuestion")
.IsRequired(true);
我在依赖模型而不是根元素上使用 Fluent API。
用户(AskedUser)可以有很多其他用户(Asker)提出的问题。 用户(Asker)可以向其他用户(AskedUser)提问。 所以 QuestionModel 应该有询问用户 ID 的外键和询问问题的用户的外键。
我构建的模型是否符合我想要实现的目标?如何使用 fluent 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);
您可以在 QuestionModel
//Asker relation
builder.Entity<QuestionModel>()
.HasOne(q=> q.Asker)
.Withmany(u => u.AskedQuestions)
.HasForeignKey(q=> q.AskerId)
.HasConstraintName("ForeignKey_Asker_QuestionAsked")
.IsRequired(true);
//Asked relation
builder.Entity<QuestionModel>()
.HasOne(q=> q.AskedUser)
.Withmany()
.HasForeignKey(q=> q.AskeduserId)
.HasConstraintName("ForeignKey_User_AskedQuestion")
.IsRequired(true);
我在依赖模型而不是根元素上使用 Fluent API。