Задать вопрос
@Jigrain

Правильное формирование моделей для проекта?

У меня есть 3 эти модели. Event(событие) - основная модель и 2 дополнительные модели: EventMember(участник события) и EventInvitation(приглашение на событие).
public class Event
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public Guid GuidId { get; set; }

        public string Title { get; set; }

        public string Desc { get; set; }

        public virtual ICollection<EventMember> Members { get; set; } 

        public virtual ICollection<EventInvitation> invitations { get; set; }
    }
    public class EventInvitation
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public Guid GuidId { get; set; }

        public string Type { get; set; }

        public string Comment { get; set; }

        public int EventId { get; set; }

        [JsonIgnore]
        public virtual Event Event { get; set; }

        public int MemberId { get; set; }

        [JsonIgnore]
        public virtual EventMember? Member { get; set; }
    }
    public class EventMember
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public Guid GuidId { get; set; }

        public string Comment { get; set; }

        public int EventId { get; set; }

        [JsonIgnore]
        public virtual Event Event { get; set; }

        public virtual EventInvitation Invitation { get; set; }
    }

Я хочу создать связь между моделями по следующему принципу - Member может быть добавлен в Event без приглашение как обязательный участник или же сначала мы создаем invitation и связанного с ним Member, если по итогу приглашение будет утверждено мы добавляем Member в колекцию Event, а само invitation - удаляем.
Выходит связь где Member может существовать без invitation, но invitation для создания нужно так же создать Member.

Для выполнения своего плана я так же я уже создал необходимые поля и связь но не уверен сделал ли я это правильно?

modelBuilder.Entity<Event>()
                .HasMany(p => p.Members)
                .WithOne(c => c.Event)
                .HasForeignKey(c => c.EventId);

            modelBuilder.Entity<Event>()
                .HasMany(p => p.invitations)
                .WithOne(c => c.Event)
                .HasForeignKey(c => c.EventId);

            modelBuilder.Entity<EventInvitation>()
                .HasOne(e => e.Member)
                .WithOne(e => e.Invitation)
                .HasForeignKey<EventInvitation>(e => e.MemberId);
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы