using System; using DevHive.Data.Models; using DevHive.Data.RelationModels; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; namespace DevHive.Data { public class DevHiveContext : IdentityDbContext { public DevHiveContext(DbContextOptions options) : base(options) { } public DbSet Technologies { get; set; } public DbSet Languages { get; set; } public DbSet Posts { get; set; } public DbSet Comments { get; set; } protected override void OnModelCreating(ModelBuilder builder) { /* User */ builder.Entity() .HasKey(x => x.Id); builder.Entity() .HasIndex(x => x.UserName) .IsUnique(); /* Roles */ builder.Entity() .HasMany(x => x.Roles) .WithMany(x => x.Users); /* Friends */ builder.Entity() .HasKey(uu => new { uu.UserId, uu.FriendId }); /* Languages */ builder.Entity() .HasKey(x => x.Id); builder.Entity() .HasMany(x => x.Languages) .WithMany(x => x.Users) .UsingEntity(x => x.ToTable("LanguageUser")); builder.Entity() .HasMany(x => x.Users) .WithMany(x => x.Languages) .UsingEntity(x => x.ToTable("LanguageUser")); /* Technologies */ builder.Entity() .HasKey(x => x.Id); builder.Entity() .HasMany(x => x.Technologies) .WithMany(x => x.Users) .UsingEntity(x => x.ToTable("TechnologyUser")); builder.Entity() .HasMany(x => x.Users) .WithMany(x => x.Technologies) .UsingEntity(x => x.ToTable("TechnologyUser")); base.OnModelCreating(builder); } } }