Zbudowanie bazy. Problem z modelami

0

Cześć chce sobie napisać prosty Chat. Ale nie wiem za bardzo jak mają wyglądać modele domenowe. Mam coś takiego jest to poprawne ?
User:

    {
        public string FirstName { get; protected set; }
        public string LastName { get; protected set; }
        public DateTime CreatedAt { get; protected set; }

        public virtual ICollection<Message> Messages { get; protected set; }
        public virtual ICollection<Conversation> Conversations { get; protected set; }
}

Message:

    public class Message : Entity
    {
        public string UserId { get; protected set; }
        public string Content { get; protected set; }
        public DateTime CreatedAt { get; protected set; }
        public long ConversationId { get; set; }

        public virtual Conversation Conversation { get; protected set; }
        public virtual User User { get; protected set; }
    }

Conversation:

    public class Conversation : Entity
    {
        public ConversationType ConversationType { get; protected set; }
        public virtual ICollection<Message> Messages { get; protected set; }
        public virtual ICollection<User> Users { get; protected set; }
    }

Te modele są poprawne. Powinnieniem mieć relacje wiele do wielu miedzy User a Conversation. Jezeli tak to musze utworzyć jeszcze jedną klase UserConversation np aby zawerała coś takiego co nie ? Bo korzystam z EF Core

    public class UserConversation : Entity
    {
        public string UserId { get; protected set; }
        public string ConversationId { get; protected set; }

        public virtual User User { get; protected set; }
        public virtual Conversation Conversation { get; protected set; }
    }

Z góry bardzo dziękuje za pomoc :)

1

Z kolekcjami to ostrożnie, jak to będzie działać przy 10tys wypowiedzi jednego usera?
Moje większe doświadczenia wydajnościowe są na gruncie Javy, ale chyba warto i tu tak myśleć.
Pod względem prawidłowej definicji w bazie wystarczy jak Message ma swojego Usera (Authora), a obiekt User nie jest "ciężki".
Kolekcja jest OK, jak Dokument ma Pozycje, ale IMHO nie tutaj.

Dla jasności kodu szerzej by pozmieniał z

public virtual User User { get; protected set; }

na np

public virtual User Author { get; protected set; }

czy jakiś tam adresat

1 użytkowników online, w tym zalogowanych: 0, gości: 1