Skip to content
Snippets Groups Projects

Milestone 1

Merged Natália Marková requested to merge milestone-1 into main
50 files
+ 2388
94
Compare changes
  • Side-by-side
  • Inline
Files
50
+ 86
0
using Microsoft.EntityFrameworkCore;
using DataAccessLayer.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Castle.Core.Configuration;
namespace DataAccessLayer.Data
{
public class BookHubDBContext : IdentityDbContext<User, IdentityRole<int>, int>
{
public DbSet<Address> Addresses { get; set; }
public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderItem> OrderItems { get; set; }
public DbSet<Review> Reviews { get; set; }
public DbSet<WishList> WishLists { get; set; }
public DbSet<WishListItem> WishListItems { get; set; }
public BookHubDBContext(DbContextOptions<BookHubDBContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Address and User (1:1 relationship)
modelBuilder.Entity<User>()
.HasOne(u => u.Address)
.WithOne(a => a.User)
.HasForeignKey<Address>(a => a.UserId);
// WishList and User (1:M relationship)
modelBuilder.Entity<WishList>()
.HasOne(w => w.User)
.WithMany(u => u.WishLists)
.HasForeignKey(w => w.UserId);
// WishListItem and WishList (1:M relationship)
modelBuilder.Entity<WishListItem>()
.HasOne(wi => wi.WishList)
.WithMany(w => w.WishListItems)
.HasForeignKey(wi => wi.WishlistId);
// WishListItem and Book (1:M relationship)
modelBuilder.Entity<WishListItem>()
.HasOne(wi => wi.Book)
.WithMany()
.HasForeignKey(wi => wi.BookId);
// Book and Author (M:1 relationship)
modelBuilder.Entity<Book>()
.HasOne(b => b.Author)
.WithMany(a => a.Books)
.HasForeignKey(b => b.AuthorId);
// Order and User (M:1 relationship)
modelBuilder.Entity<Order>()
.HasOne(o => o.User)
.WithMany(u => u.Orders)
.HasForeignKey(o => o.UserId);
// Order and OrderItem (1:M relationship)
modelBuilder.Entity<Order>()
.HasMany(o => o.OrderItems)
.WithOne(oi => oi.Order)
.HasForeignKey(oi => oi.OrderId);
// Review and Book (M:1 relationship)
modelBuilder.Entity<Review>()
.HasOne(r => r.Book)
.WithMany(b => b.Reviews)
.HasForeignKey(r => r.BookId);
// Review and User (M:1 relationship)
modelBuilder.Entity<Review>()
.HasOne(r => r.User)
.WithMany(u => u.Reviews)
.HasForeignKey(r => r.UserId);
DataInitializer.SeedData(modelBuilder);
}
}
}
Loading