-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDatabaseContext.cs
108 lines (86 loc) · 4.34 KB
/
DatabaseContext.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using Microsoft.EntityFrameworkCore;
using mst.Models;
using System;
namespace mst
{
public class DatabaseContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Referee> Referees { get; set; }
public DbSet<Show> Shows { get; set; }
public DbSet<Nomination> Nominations { get; set; }
public DbSet<Competition> Competitions { get; set; }
public DbSet<ShowReferee> ShowReferees { get; set; }
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) {
//Database.EnsureDeleted();
Database.EnsureCreated();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Referee>(entity => {
entity.Property(x => x.Avatar).HasColumnType("mediumblob");
});
modelBuilder.Entity<Show>(entity => {
entity.Property(x => x.Image).HasColumnType("mediumblob");
});
modelBuilder.Entity<Nomination>()
.HasOne(x => x.Competition)
.WithMany(t => t.Nominations)
.HasForeignKey(p => p.CompetitionId);
modelBuilder.Entity<ShowNomination>()
.HasKey( u => new { u.ShowId, u.NominationId });
modelBuilder.Entity<ShowNomination>()
.HasOne(sn => sn.Nomination)
.WithMany(n => n.ShowNominations)
.HasForeignKey(sn => sn.NominationId);
modelBuilder.Entity<ShowNomination>()
.HasOne(sn => sn.Show)
.WithMany(s => s.ShowNominations)
.HasForeignKey(sn => sn.ShowId);
modelBuilder.Entity<Estimation>()
.HasKey( u => new { u.ShowId, u.NominationId, u.RefereeId });
modelBuilder.Entity<Estimation>()
.HasOne(e => e.Show)
.WithMany(sn => sn.Estimations)
.HasForeignKey(e => e.ShowId);
modelBuilder.Entity<Estimation>()
.HasOne(e => e.Nomination)
.WithMany(sn => sn.Estimations)
.HasForeignKey(e => e.NominationId);
modelBuilder.Entity<Estimation>()
.HasOne(e => e.Referee)
.WithMany(r => r.Estimations)
.HasForeignKey(e => e.RefereeId);
modelBuilder.Entity<Referee>()
.HasOne(x => x.User).WithOne(q => q.Referee)
.HasForeignKey<User>(f => f.RefereeId)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<ShowReferee>()
.HasKey(q => new { q.RefereeId, q.ShowId });
modelBuilder.Entity<BlockedReferee>()
.HasKey( x => new { x.ShowId, x.RefereeId });
modelBuilder.Entity<BlockedReferee>()
.HasOne(e => e.Show)
.WithMany(c => c.BlockedReferees)
.HasForeignKey(x => x.ShowId);
modelBuilder.Entity<BlockedReferee>()
.HasOne(e => e.Referee)
.WithMany(c => c.BlockedReferees)
.HasForeignKey(x => x.RefereeId);
modelBuilder.Entity<AvailableCompetition>()
.HasKey( x => new { x.CompetitionId, x.RefereeId });
modelBuilder.Entity<AvailableCompetition>()
.HasOne(x => x.Competition)
.WithMany(x => x.AvailableCompetitions)
.HasForeignKey(x => x.CompetitionId);
modelBuilder.Entity<AvailableCompetition>()
.HasOne(x => x.Referee)
.WithMany(x => x.AvailableCompetitions)
.HasForeignKey(x => x.RefereeId);//60cxmn5y
modelBuilder.Entity<Referee>().HasData(new Referee { Id = 5, Email = "[email protected]", FullName = "Àäìèíèñòðàòîð", Login = "[email protected]" });
modelBuilder.Entity<User>().HasData(new User { Id = 5, RefereeId = 5, Login = "[email protected]", Password = "60cxmn5y" });
modelBuilder.Entity<Competition>().HasData(new Competition { BeginDate = DateTime.MinValue, EndDate = DateTime.MaxValue, Id = 99, Name = "Çðèòåëüñêîå ãîëîñîâàíèå" });
modelBuilder.Entity<Nomination>().HasData(new Nomination { Id = 99, Name = "Çðèòåëüñêîå ãîëîñîâàíèå", CompetitionId = 99 });
}
}
}