@hfhskjgskg

Как реализовать подписку юзеров на других?

Есть сущность пользователя, хочу реализовать функционал для подписки пользователей на других. Сделал для этого отдельную сущность UserSubscriptions, но не очень понимаю, как это связать через fluent api. Может создание сущности для этого излишнее вовсе ? Как это лучше всего написать ?
Сущность User
public class User
    {
        public User()
        {
            Posts = new HashSet<Post>();
            Comments = new HashSet<Comment>();
            PostsRatings = new HashSet<PostRating>();
            Subscriptions = new HashSet<UserSubscriptions>(); 
        }

        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public DateTime RegistrationDate { get; set; }
        public Roles Role { get; set; }
        public AvatarImage AvatarImage { get; set; }
        public string RefreshToken { get; set; }
        public DateTime RefreshTokenExpirationDate { get; set; }

        // Post
        public ICollection<Post> Posts { get; set; }

        // Comment
        public ICollection<Comment> Comments { get; set; }

        // PostRating
        public ICollection<PostRating> PostsRatings { get; set; }

        // Subscriptions
        public ICollection<UserSubscriptions> Subscriptions { get; set; }
    }


Сущность UserSubscriptions
public class UserSubscriptions
    {
        public int Id { get; set; }
        public User User { get; set; }
        public User SubsUser { get; set; }
        public int UserId { get; set; }
        public int SubsUserId { get; set; }
        public DateTime DateSubscribe { get; set; }
    }
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ответы на вопрос 1
igolets
@igolets
Программист C#, MSSQL
Это нужно погуглить по ключевым словам "entity framework many to many fluent".

// к User добавить 
        // Subscribers
        public ICollection<UserSubscriptions> Subscribers { get; set; }

// при конфигурировании датаконтекста использовать следующий fluent синтаксис
modelBuilder.Entity<User>()
   .HasMany(u => u.Subscriptions)
   .WithMany(u => u.Subscribers)
   .Map(cs =>
   {
       cs.MapLeftKey("UserId");
       cs.MapRightKey("SubsUserId");
       cs.ToTable("UserSubscriptions");
   });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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