LibraryManagement / Database /Models /LibraryManagementContext.cs
Yuyuqt
feat: add user management, book management, categories management, membership management, and borrowing management
87c9973
Raw
History Blame
7.52 kB
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace Database.Models;
public partial class LibraryManagementContext : DbContext
{
public LibraryManagementContext()
{
}
public LibraryManagementContext(DbContextOptions<LibraryManagementContext> options)
: base(options)
{
}
public virtual DbSet<Book> Books { get; set; }
public virtual DbSet<Borrowing> Borrowings { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Membership> Memberships { get; set; }
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<UserSubscription> UserSubscriptions { get; set; }
public virtual DbSet<Wishlist> Wishlists { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
=> optionsBuilder.UseSqlServer("Server=DESKTOP-BP9A061;Database=LibraryManagement;User Id=sa;Password=sasa@123;TrustServerCertificate=True;");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Books__3214EC07AE1974C8");
entity.HasIndex(e => e.Isbn, "UQ__Books__447D36EA79CF66CE").IsUnique();
entity.Property(e => e.Author).HasMaxLength(100);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("(getdate())")
.HasColumnType("datetime");
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.Isbn)
.HasMaxLength(20)
.HasColumnName("ISBN");
entity.Property(e => e.Status)
.HasMaxLength(20)
.HasDefaultValue("Available");
entity.Property(e => e.Title).HasMaxLength(200);
entity.Property(e => e.TotalCopies).HasDefaultValue(1);
entity.Property(e => e.AvailableCopies).HasDefaultValue(1);
entity.Property(e => e.UpdatedAt).HasColumnType("datetime");
entity.HasMany(d => d.Categories).WithMany(p => p.Books)
.UsingEntity<Dictionary<string, object>>(
"BookCategory",
r => r.HasOne<Category>().WithMany()
.HasForeignKey("CategoryId")
.HasConstraintName("FK_BookCategories_Categories"),
l => l.HasOne<Book>().WithMany()
.HasForeignKey("BookId")
.HasConstraintName("FK_BookCategories_Books"),
j =>
{
j.HasKey("BookId", "CategoryId").HasName("PK__BookCate__9C7051A74E7D221D");
j.ToTable("BookCategories");
});
});
modelBuilder.Entity<Borrowing>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Borrowin__3214EC07EA26D8CD");
entity.Property(e => e.BorrowDate)
.HasDefaultValueSql("(getdate())")
.HasColumnType("datetime");
entity.Property(e => e.DueDate).HasColumnType("datetime");
entity.Property(e => e.FineAmount).HasColumnType("decimal(10, 2)");
entity.Property(e => e.ReturnDate).HasColumnType("datetime");
entity.Property(e => e.Status)
.HasMaxLength(20)
.HasDefaultValue("Active");
entity.HasOne(d => d.Book).WithMany(p => p.Borrowings)
.HasForeignKey(d => d.BookId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Borrowings_Books");
entity.HasOne(d => d.User).WithMany(p => p.Borrowings)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Borrowings_Users");
});
modelBuilder.Entity<Category>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Categori__3214EC0751B5797D");
entity.HasIndex(e => e.Name, "UQ__Categori__737584F622B16D3A").IsUnique();
entity.Property(e => e.Name).HasMaxLength(100);
});
modelBuilder.Entity<Membership>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Membersh__3214EC07A6F5A55F");
entity.HasIndex(e => e.Type, "IX_Memberships_Type").IsUnique();
entity.Property(e => e.Price).HasColumnType("decimal(10, 2)");
entity.Property(e => e.Type).HasMaxLength(50);
});
modelBuilder.Entity<User>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Users__3214EC0771D7BED2");
entity.HasIndex(e => e.Email, "UQ__Users__A9D10534F91FFF73").IsUnique();
entity.Property(e => e.Address).HasMaxLength(255);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("(getdate())")
.HasColumnType("datetime");
entity.Property(e => e.Email).HasMaxLength(100);
entity.Property(e => e.FullName).HasMaxLength(100);
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.PhoneNumber).HasMaxLength(20);
entity.Property(e => e.Role)
.HasMaxLength(20)
.HasDefaultValue("Member");
entity.Property(e => e.StudentId).HasMaxLength(20);
entity.Property(e => e.SuspensionEndDate).HasColumnType("datetime");
entity.Property(e => e.UpdatedAt).HasColumnType("datetime");
});
modelBuilder.Entity<UserSubscription>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__UserSubs__3214EC07E3FBC0EC");
entity.Property(e => e.ExpiryDate).HasColumnType("datetime");
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.StartDate).HasColumnType("datetime");
entity.HasOne(d => d.Membership).WithMany(p => p.UserSubscriptions)
.HasForeignKey(d => d.MembershipId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_UserSubscriptions_Memberships");
entity.HasOne(d => d.User).WithMany(p => p.UserSubscriptions)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_UserSubscriptions_Users");
});
modelBuilder.Entity<Wishlist>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Wishlist__3214EC07F63D8F81");
entity.HasOne(d => d.Book).WithMany(p => p.Wishlists)
.HasForeignKey(d => d.BookId)
.HasConstraintName("FK_Wishlists_Books");
entity.HasOne(d => d.User).WithMany(p => p.Wishlists)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_Wishlists_Users");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}