aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Data/DevHiveContext.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DevHive.Data/DevHiveContext.cs')
-rw-r--r--src/DevHive.Data/DevHiveContext.cs41
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);
}