Это отношения многие ко многим?

1

Я разрабатываю библиотеку.NET Framework 4.5 с С# и Entity Framework 6.1 Code First.

У меня эти два класса:

public class User
{
    public int UserId { get; set; }
    public string UserName { get; set; }

    public ICollection<Group> Groups { get; set; }

    public ICollection<Message> MessagesSent { get; set; }
    public ICollection<Message> MessagesReceived { get; set; }
}

public class Message
{
    public int MessageId { get; set; }
    public string Body { get; set; }
    public DateTime DateSent { get; set; }

    public User Sender { get; set; }
    public ICollection<User> Recipients { get; set; }
}

Как сделать, чтобы создать таблицу получателей?

Изображение 174551

Я использую Fluent API, и у меня есть два класса:

public class MessageConfiguration: EntityTypeConfiguration<Message>

А ТАКЖЕ

public class UserConfiguration: EntityTypeConfiguration<User>

Но я не то, что мне нужно сделать, чтобы создать таблицу Recipient.

Я пытаюсь представить это:

  • Сообщение может быть отправлено одному или нескольким получателям.
  • Пользователь (получатель) может получать ноль или более сообщений (но он может получать сообщение только один раз).

Правильно ли работает мой проект базы данных?

Теги:
entity-framework

1 ответ

1
Лучший ответ

Попробуй это:

public class MessageConfiguration : EntityTypeConfiguration<Message>
{
    public MessageConfiguration()
    {
        this.HasMany(x => x.Recipients)
            .WithMany(x => x.MessagesReceived)
            .Map(x =>  x.ToTable("MessageRecipients")
                        .MapLeftKey("MessageId")
                        .MapRightKey("UserId"));
    }
}

(Обратите внимание, что я назначил имя таблицы MessageRecipients вместо Recipients)

  • 0
    Спасибо за Ваш ответ. Мой дизайн базы данных также поддерживает, что одно сообщение может иметь только одного получателя. Я думаю, что это так, но вы использовали HasMany и WithMany . Если у меня только один получатель и только одно сообщение, это проблема? Я так не думаю, но это мое сомнение. Благодарю.
  • 0
    Если у каждого сообщения есть только один получатель, почему Message.Recipients является коллекцией?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню