Несколько (необязательно) отношений один к одному с одним свойством навигации

Я пытаюсь настроить отношения между двумя объектами, в которых родитель может иметь несколько (именованных) дочерних элементов одного и того же типа, в то время как у ребенка должен быть только один общий родитель. На основе примера блога / сообщений я пытаюсь настроить следующее. Блогпосты не являются хорошим примером, но в моем приложении у меня есть 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.

Есть идеи, как это решить?

0 ответов

Другие вопросы по тегам