Несколько (необязательно) отношений один к одному с одним свойством навигации
Я пытаюсь настроить отношения между двумя объектами, в которых родитель может иметь несколько (именованных) дочерних элементов одного и того же типа, в то время как у ребенка должен быть только один общий родитель. На основе примера блога / сообщений я пытаюсь настроить следующее. Блогпосты не являются хорошим примером, но в моем приложении у меня есть 5 фиксированных дочерних сущностей.
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int? FirstPostId { get; set; }
public Post FirstPost { get; set; }
public int? SecondPostId { get; set; }
public Post SecondPost { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int? BlogId { get; set; }
public Blog Blog { get; set; }
}
Я пытался настроить это так:
modelBuilder
.Entity<Blog>()
.HasOne(_ => _.FirstPost)
.WithOne()
.HasForeignKey<Blog>(_ => _.FirstPostId);
modelBuilder
.Entity<Blog>()
.HasOne(_ => _.SecondPost)
.WithOne()
.HasForeignKey<Blog>(_ => _.SecondPostId);
modelBuilder
.Entity<Post>()
.HasOne(_ => _.Blog)
.WithOne()
.HasForeignKey<Post>(_ => _.BlogId);
В моей реальной проблеме пост также не обязательно должен принадлежать блогу, и все внешние ключи являются составными, но это не должно быть проблемой.
Настроенные таким образом, FirstPost и SecondPost распознаются, но Post. Blog/Post. BlogId всегда имеет значение null.
Есть идеи, как это решить?