diff options
Diffstat (limited to 'src/DevHive.Data/DevHiveContext.cs')
| -rw-r--r-- | src/DevHive.Data/DevHiveContext.cs | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/src/DevHive.Data/DevHiveContext.cs b/src/DevHive.Data/DevHiveContext.cs index 48a6789..40b2a42 100644 --- a/src/DevHive.Data/DevHiveContext.cs +++ b/src/DevHive.Data/DevHiveContext.cs @@ -1,5 +1,6 @@ using System; using DevHive.Data.Models; +using DevHive.Data.RelationModels; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; @@ -17,30 +18,50 @@ namespace DevHive.Data protected override void OnModelCreating(ModelBuilder builder) { + /* User */ builder.Entity<User>() - .HasIndex(x => x.UserName) - .IsUnique(); + .HasKey(x => x.Id); builder.Entity<User>() - .HasMany(x => x.Roles); + .HasIndex(x => x.UserName) + .IsUnique(); + /* Roles */ builder.Entity<User>() - .HasMany(x => x.Friends); + .HasMany(x => x.Roles) + .WithMany(x => x.Users); - builder.Entity<User>() - .HasMany(x => x.Languages); + /* Friends */ + builder.Entity<UserFriends>() + .HasKey(uu => new { uu.UserId, uu.FriendId }); + /* Languages */ builder.Entity<Language>() - .HasMany(x => x.Users); + .HasKey(x => x.Id); builder.Entity<User>() - .HasMany(x => x.Technologies); + .HasMany(x => x.Languages) + .WithMany(x => x.Users) + .UsingEntity(x => x.ToTable("LanguageUser")); + builder.Entity<Language>() + .HasMany(x => x.Users) + .WithMany(x => x.Languages) + .UsingEntity(x => x.ToTable("LanguageUser")); + + /* Technologies */ builder.Entity<Technology>() - .HasMany(x => x.Users); + .HasKey(x => x.Id); builder.Entity<User>() - .HasChangeTrackingStrategy(ChangeTrackingStrategy.Snapshot); + .HasMany(x => x.Technologies) + .WithMany(x => x.Users) + .UsingEntity(x => x.ToTable("TechnologyUser")); + + builder.Entity<Technology>() + .HasMany(x => x.Users) + .WithMany(x => x.Technologies) + .UsingEntity(x => x.ToTable("TechnologyUser")); base.OnModelCreating(builder); } |
