using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; namespace Database.Models; public partial class LibraryManagementContext : DbContext { public LibraryManagementContext() { } public LibraryManagementContext(DbContextOptions options) : base(options) { } public virtual DbSet Books { get; set; } public virtual DbSet Borrowings { get; set; } public virtual DbSet Categories { get; set; } public virtual DbSet Memberships { get; set; } public virtual DbSet Users { get; set; } public virtual DbSet UserSubscriptions { get; set; } public virtual DbSet 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(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>( "BookCategory", r => r.HasOne().WithMany() .HasForeignKey("CategoryId") .HasConstraintName("FK_BookCategories_Categories"), l => l.HasOne().WithMany() .HasForeignKey("BookId") .HasConstraintName("FK_BookCategories_Books"), j => { j.HasKey("BookId", "CategoryId").HasName("PK__BookCate__9C7051A74E7D221D"); j.ToTable("BookCategories"); }); }); modelBuilder.Entity(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(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(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(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(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(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); }