Advertisement
Guest User

Untitled

a guest
Nov 9th, 2023
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. // Author
  2. using System.ComponentModel.DataAnnotations;
  3. using System.ComponentModel.DataAnnotations.Schema;
  4.  
  5. namespace Biblioteka.Models
  6. {
  7. public class Author
  8. {
  9. [Key]
  10. public int Id { get; set; }
  11. [Required]
  12. [MaxLength(50)]
  13. public string Name { get; set; } = string.Empty;
  14. [Required]
  15. [MaxLength(50)]
  16. public string Surname { get; set; } = string.Empty;
  17. public int CountryId { get; set; }
  18. public Country Country { get; set; } = new Country();
  19. public IEnumerable<Book> Books { get; set; } = new List<Book>();
  20. }
  21. }
  22.  
  23. // Country
  24. using System.ComponentModel.DataAnnotations;
  25.  
  26. namespace Biblioteka.Models
  27. {
  28. public class Country
  29. {
  30. [Key]
  31. public int Id { get; set; }
  32. [Required]
  33. public string Name { get; set; } = string.Empty;
  34. public IEnumerable<Author> Authors { get; set; } = new List<Author>();
  35. public IEnumerable<Publisher> Publishers { get; set; } = new List<Publisher>();
  36. }
  37. }
  38.  
  39. // DbContext
  40. using Biblioteka.Models;
  41. using Microsoft.EntityFrameworkCore;
  42.  
  43. namespace Biblioteka.Data
  44. {
  45. public class LibraryDbContext : DbContext
  46. {
  47. public LibraryDbContext(DbContextOptions<LibraryDbContext> options) : base(options) {}
  48. public DbSet<Book> Books { get; set; }
  49. public DbSet<Country> Countries { get; set; }
  50. public DbSet<Genre> Genres { get; set; }
  51. public DbSet<Publisher> Publishers { get; set; }
  52. public DbSet<Language> Languages { get; set; }
  53. public DbSet<Author> Authors { get; set; }
  54. public DbSet<Worker> Workers { get; set; }
  55. public DbSet<Customer> Customers { get; set; }
  56. public DbSet<Review> Reviews { get; set; }
  57. public DbSet<Rental> Rentals { get; set; }
  58. protected override void OnModelCreating(ModelBuilder modelBuilder)
  59. {
  60. modelBuilder.Entity<Book>().HasOne(b => b.Genre).WithMany(g => g.Books).HasForeignKey(b => b.GenreId);
  61. modelBuilder.Entity<Book>().HasOne(b => b.Publisher).WithMany(p => p.Books).HasForeignKey(b => b.PublisherId);
  62. modelBuilder.Entity<Book>().HasOne(b => b.Language).WithMany(l => l.Books).HasForeignKey(b => b.LanguageId);
  63. modelBuilder.Entity<Book>().HasMany(b => b.Authors).WithMany(a => a.Books);
  64. modelBuilder.Entity<Review>().HasOne(r => r.Book).WithMany(b => b.Reviews).HasForeignKey(r => r.BookId);
  65. modelBuilder.Entity<Review>().HasOne(r => r.Customer).WithMany(r => r.Reviews).HasForeignKey(r => r.CustomerId);
  66. modelBuilder.Entity<Rental>().HasOne(r => r.Book).WithMany(b => b.Rentals).HasForeignKey(r => r.BookId);
  67. modelBuilder.Entity<Rental>().HasOne(r => r.Customer).WithMany(r => r.Rentals).HasForeignKey(r => r.CustomerId);
  68. modelBuilder.Entity<Publisher>().HasOne(p => p.Country).WithMany(c => c.Publishers).HasForeignKey(p => p.CountryId);
  69. modelBuilder.Entity<Author>().HasOne(a => a.Country).WithMany(c => c.Authors).HasForeignKey(a => a.CountryId);
  70.  
  71.  
  72. modelBuilder.Entity<Language>().HasData(
  73. new Language { Id = 1, LanguageName = "English" },
  74. new Language { Id = 2, LanguageName = "Polish" },
  75. new Language { Id = 3, LanguageName = "German" },
  76. new Language { Id = 4, LanguageName = "French" }
  77. );
  78.  
  79. modelBuilder.Entity<Genre>().HasData(
  80. new Genre { Id = 1, Name = "Fantasy" },
  81. new Genre { Id = 2, Name = "Science Fiction" },
  82. new Genre { Id = 3, Name = "Horror" },
  83. new Genre { Id = 4, Name = "Romance" }
  84. );
  85.  
  86. modelBuilder.Entity<Worker>().HasData(
  87. new Worker{ Id = 1, Name = "Wojtek", Surname = "Szoda", Email = "[email protected]", Role = "Admin"},
  88. new Worker{ Id = 2, Name = "Jan", Surname = "Kowalski", Email = "[email protected]", Role = "Worker"},
  89. new Worker{ Id = 3, Name = "Adam", Surname = "Nowak", Email = "[email protected]", Role = "Worker"}
  90. );
  91.  
  92. modelBuilder.Entity<Country>().HasData(
  93. new Country { Id = 1, Name = "Poland" },
  94. new Country { Id = 2, Name = "United Kingdom" },
  95. new Country { Id = 3, Name = "United States" },
  96. new Country { Id = 4, Name = "France" },
  97. new Country { Id = 5, Name = "Germany" }
  98. );
  99.  
  100. modelBuilder.Entity<Author>().HasData(
  101. new Author { Id = 1, Name = "J.R.R.", Surname = "Tolkien", CountryId = 2},
  102. new Author { Id = 2, Name = "Stephen", Surname = "King", CountryId = 3 },
  103. new Author { Id = 3, Name = "Andrzej", Surname = "Sapkowski", CountryId = 1 },
  104. new Author { Id = 4, Name = "George R.R.", Surname = "Martin", CountryId = 3 },
  105. new Author { Id = 5, Name = "J.K.", Surname = "Rowling", CountryId = 2 },
  106. new Author { Id = 6, Name = "H.P.", Surname = "Lovecraft", CountryId = 3 },
  107. new Author { Id = 7, Name = "William", Surname = "Shakespeare", CountryId = 2 },
  108. new Author { Id = 8, Name = "Jane", Surname = "Austen", CountryId = 2 },
  109. new Author { Id = 9, Name = "Emily", Surname = "Bronte", CountryId = 2 },
  110. new Author { Id = 10, Name = "Charlotte", Surname = "Bronte", CountryId = 2 },
  111. new Author { Id = 11, Name = "Anne", Surname = "Bronte", CountryId = 2 },
  112. new Author { Id = 12, Name = "Arthur Conan", Surname = "Doyle", CountryId = 2 },
  113. new Author { Id = 13, Name = "Agatha", Surname = "Christie", CountryId = 2 },
  114. new Author { Id = 14, Name = "Jules", Surname = "Verne", CountryId = 4 },
  115. new Author { Id = 15, Name = "Herman", Surname = "Melville", CountryId = 3 },
  116. new Author { Id = 16, Name = "Mark", Surname = "Twain", CountryId = 3 },
  117. new Author { Id = 17, Name = "Charles", Surname = "Dickens", CountryId = 2 },
  118. new Author { Id = 18, Name = "Fyodor", Surname = "Dostoevsky", CountryId = 5 }
  119. );
  120.  
  121. modelBuilder.Entity<Publisher>().HasData(
  122. new Publisher { Id = 1, Name = "PWN", CountryId = 1 },
  123. new Publisher { Id = 2, Name = "Wydawnictwo Literackie", CountryId = 1 },
  124. new Publisher { Id = 3, Name = "Penguin Books", CountryId = 2 }
  125. );
  126.  
  127.  
  128. modelBuilder.Entity<Customer>().HasData(
  129. new Customer { Id = 1, Name = "Jan", Surname = "Kowalski", Email = "[email protected]", PhoneNumber = "123456789", Address = "ul. Kowalska 1, 00-000 Warszawa" },
  130. new Customer { Id = 2, Name = "Adam", Surname = "Nowak", Email = "[email protected]", PhoneNumber = "987654321", Address = "ul. Nowaka 1, 00-000 Warszawa" },
  131. new Customer { Id = 3, Name = "Kamil", Surname = "Nowacki", Email = "[email protected]", PhoneNumber = "123123123", Address = "ul. Nowacki 1, 00-000 Warszawa" }
  132. );
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement