source: resTools_backend/backend/Data/DataContext.cs@ a26f6a1

Last change on this file since a26f6a1 was 899b19d, checked in by Danilo <danilo.najkov@…>, 2 years ago

reviews full feature

  • Property mode set to 100644
File size: 3.6 KB
Line 
1using backend.Entities;
2using Microsoft.EntityFrameworkCore;
3
4namespace backend.Data
5{
6 public class DataContext : DbContext
7 {
8 public DataContext(DbContextOptions<DataContext> dbContextOptions) : base(dbContextOptions)
9 {
10 }
11
12 private DbSet<User> users;
13 public DbSet<User> Users
14 {
15 get
16 {
17 if (users == null)
18 {
19 users = Set<User>();
20 }
21
22 return users;
23 }
24 }
25
26 private DbSet<Restaurant> restaurants;
27 public DbSet<Restaurant> Restoraunts
28 {
29 get
30 {
31 if (restaurants == null)
32 {
33 restaurants = Set<Restaurant>();
34 }
35
36 return restaurants;
37 }
38 }
39
40 private DbSet<Reservation> reservations;
41 public DbSet<Reservation> Reservations
42 {
43 get
44 {
45 if (reservations == null)
46 {
47 reservations = Set<Reservation>();
48 }
49
50 return reservations;
51 }
52 }
53
54 private DbSet<MenuItem> menuItems;
55 public DbSet<MenuItem> MenuItems
56 {
57 get
58 {
59 if (menuItems == null)
60 {
61 menuItems = Set<MenuItem>();
62 }
63
64 return menuItems;
65 }
66 }
67
68 private DbSet<Review> reviews;
69 public DbSet<Review> Reviews
70 {
71 get
72 {
73 if (reviews == null)
74 {
75 reviews = Set<Review>();
76 }
77
78 return reviews;
79 }
80 }
81
82
83 protected override void OnModelCreating(ModelBuilder modelBuilder)
84 {
85 //
86 // User
87 //
88 modelBuilder.Entity<User>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
89 modelBuilder.Entity<User>()
90 .HasOne(p => p.Restaurant)
91 .WithOne(b => b.Owner);
92
93 //
94 // Restoraunt
95 //
96 modelBuilder.Entity<Restaurant>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
97 modelBuilder.Entity<Restaurant>()
98 .HasOne(p => p.Owner)
99 .WithOne(b => b.Restaurant)
100 .HasForeignKey<Restaurant>(k => k.OwnerFk);
101 modelBuilder.Entity<Restaurant>()
102 .HasMany(p => p.Reservations)
103 .WithOne(b => b.Restaurant);
104 modelBuilder.Entity<Restaurant>()
105 .HasMany(p => p.Reviews)
106 .WithOne(b => b.Restaurant);
107
108 //
109 // Reservation
110 //
111 modelBuilder.Entity<Reservation>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
112 modelBuilder.Entity<Reservation>()
113 .HasOne(p => p.Restaurant)
114 .WithMany(b => b.Reservations);
115
116 //
117 // MenuItem
118 //
119 modelBuilder.Entity<MenuItem>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
120 modelBuilder.Entity<MenuItem>()
121 .HasOne(p => p.Restaurant)
122 .WithMany(b => b.Menu);
123
124 //
125 // Review
126 //
127 modelBuilder.Entity<Review>().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd();
128 modelBuilder.Entity<Review>()
129 .HasOne(p => p.Restaurant)
130 .WithMany(b => b.Reviews);
131 modelBuilder.Entity<Review>()
132 .HasOne(p => p.User);
133 }
134 }
135}
Note: See TracBrowser for help on using the repository browser.