diff --git a/HomeWork21/HomeWork21.sln b/HomeWork21/HomeWork21.sln new file mode 100644 index 0000000..7757f63 --- /dev/null +++ b/HomeWork21/HomeWork21.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34525.116 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HomeWork21", "HomeWork21\HomeWork21.csproj", "{0BEE645B-6D86-404B-9793-B72321132D9A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0BEE645B-6D86-404B-9793-B72321132D9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0BEE645B-6D86-404B-9793-B72321132D9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0BEE645B-6D86-404B-9793-B72321132D9A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0BEE645B-6D86-404B-9793-B72321132D9A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0B529666-E964-4A14-87C7-F3ED5FABA8B5} + EndGlobalSection +EndGlobal diff --git a/HomeWork21/HomeWork21/App.cs b/HomeWork21/HomeWork21/App.cs new file mode 100644 index 0000000..59d31a0 --- /dev/null +++ b/HomeWork21/HomeWork21/App.cs @@ -0,0 +1,62 @@ +using HomeWork21.Data; +using HomeWork21.Models; +using Microsoft.EntityFrameworkCore; + +namespace HomeWork21 +{ + internal class App + { + private readonly AplicationDbContext _dbContext; + + public App(AplicationDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task StartUpAsync() + { + + List pets = new List(); + + var data = await _dbContext.Pets.ToListAsync(); + + foreach (var pet in data) + { + pets.Add( + new Pet() + { + Id = pet.Id, + Name = pet.Name, + Age = pet.Age, + Discription = pet.Description, + ImageUrl = pet.ImageUrl, + + Category = new Category() + { + Id = pet.Category.Id, + Name = pet.Category.CategoryName, + }, + + Breed = new Breed() + { + Id = pet.Breed.Id, + Name = pet.Breed.BreedName, + + Category = new Category() + { + Id = pet.Category.Id, + Name = pet.Category.CategoryName, + }, + }, + + Location = new Location() + { + Id = pet.Location.Id, + Name = pet.Location.LocationName + } + + }); + } + } + } +} diff --git a/HomeWork21/HomeWork21/Data/AplicationDbContext.cs b/HomeWork21/HomeWork21/Data/AplicationDbContext.cs new file mode 100644 index 0000000..943447d --- /dev/null +++ b/HomeWork21/HomeWork21/Data/AplicationDbContext.cs @@ -0,0 +1,27 @@ +using HomeWork21.Data.Entities; +using HomeWork21.Data.EntitiesConfigure; +using Microsoft.EntityFrameworkCore; + +namespace HomeWork21.Data +{ + internal class AplicationDbContext : DbContext + { + public AplicationDbContext(DbContextOptions options) + : base(options) + { } + + public DbSet Breeds { get; set; } = null!; + public DbSet Categories { get; set; } = null!; + public DbSet Locations { get; set; } = null!; + public DbSet Pets { get; set; } = null!; + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.ApplyConfiguration(new CategoryEntityConfigure()); + modelBuilder.ApplyConfiguration(new BreedEntityConfigure()); + modelBuilder.ApplyConfiguration(new LocationEntityConfigure()); + modelBuilder.ApplyConfiguration(new PetEntityConfiguration()); + modelBuilder.UseHiLo(); + } + } +} diff --git a/HomeWork21/HomeWork21/Data/AplicationDbContextFactory.cs b/HomeWork21/HomeWork21/Data/AplicationDbContextFactory.cs new file mode 100644 index 0000000..d4b2350 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/AplicationDbContextFactory.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace HomeWork21.Data +{ + internal class AplicationDbContextFactory : IDesignTimeDbContextFactory + { + public AplicationDbContext CreateDbContext(string[] args) + { + var optionsBuilder = new DbContextOptionsBuilder(); + + var builder = new ConfigurationBuilder(); + builder.SetBasePath(Directory.GetCurrentDirectory()); + builder.AddJsonFile("config.json"); + var config = builder.Build(); + + var connectionString = config.GetConnectionString("DefaultConnection"); + + optionsBuilder + .UseSqlServer(connectionString, + option => option + .CommandTimeout((int)TimeSpan + .FromMinutes(10).TotalSeconds)); + + return new AplicationDbContext(optionsBuilder.Options); + } + } +} \ No newline at end of file diff --git a/HomeWork21/HomeWork21/Data/Entities/BreedEntity.cs b/HomeWork21/HomeWork21/Data/Entities/BreedEntity.cs new file mode 100644 index 0000000..2f281b1 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/Entities/BreedEntity.cs @@ -0,0 +1,12 @@ +namespace HomeWork21.Data.Entities +{ + internal class BreedEntity + { + public int Id { get; set; } + public string BreedName { get; set; } = null!; + public ICollection Pet { get; set; } = new List(); + + public int CategoryId { get; set; } + public CategoryEntity? Category { get; set; } + } +} diff --git a/HomeWork21/HomeWork21/Data/Entities/CategoryEntity.cs b/HomeWork21/HomeWork21/Data/Entities/CategoryEntity.cs new file mode 100644 index 0000000..e3e7e96 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/Entities/CategoryEntity.cs @@ -0,0 +1,11 @@ +namespace HomeWork21.Data.Entities +{ + internal class CategoryEntity + { + public int Id { get; set; } + public string CategoryName { get; set; } = null!; + + public ICollection Pet { get; set; } = new List(); + public ICollection Breed { get; set; } = new List(); + } +} diff --git a/HomeWork21/HomeWork21/Data/Entities/LocationEntity.cs b/HomeWork21/HomeWork21/Data/Entities/LocationEntity.cs new file mode 100644 index 0000000..dea95aa --- /dev/null +++ b/HomeWork21/HomeWork21/Data/Entities/LocationEntity.cs @@ -0,0 +1,10 @@ +namespace HomeWork21.Data.Entities +{ + internal class LocationEntity + { + public int Id { get; set; } + public string LocationName { get; set; } = null!; + + public ICollection Pet { get; set; } = new List(); + } +} diff --git a/HomeWork21/HomeWork21/Data/Entities/PetEntity.cs b/HomeWork21/HomeWork21/Data/Entities/PetEntity.cs new file mode 100644 index 0000000..4be588f --- /dev/null +++ b/HomeWork21/HomeWork21/Data/Entities/PetEntity.cs @@ -0,0 +1,18 @@ +namespace HomeWork21.Data.Entities +{ + internal class PetEntity + { + public int Id { get; set; } + public string Name { get; set; } = null!; + public float Age { get; set; } + public string? ImageUrl { get; set; } + public string? Description { get; set; } + + public int CategoryId { get; set; } + public CategoryEntity? Category { get; set; } + public int BreedId { get; set; } + public BreedEntity? Breed { get; set; } + public int LocationId { get; set; } + public LocationEntity? Location { get; set; } + } +} diff --git a/HomeWork21/HomeWork21/Data/EntitiesConfigure/BreedEntityConfigure.cs b/HomeWork21/HomeWork21/Data/EntitiesConfigure/BreedEntityConfigure.cs new file mode 100644 index 0000000..605e214 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/EntitiesConfigure/BreedEntityConfigure.cs @@ -0,0 +1,30 @@ +using HomeWork21.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace HomeWork21.Data.EntitiesConfigure +{ + internal class BreedEntityConfigure : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(x => x.Id); + + builder + .Property(p => p.BreedName) + .IsRequired() + .HasColumnName("Breed_Name"); + + builder + .Property(p => p.CategoryId) + .IsRequired() + .HasColumnName("Category_Id"); + + builder + .HasOne(o => o.Category) + .WithMany(m => m.Breed) + .HasForeignKey(o => o.CategoryId) + .OnDelete(DeleteBehavior.Cascade); + } + } +} diff --git a/HomeWork21/HomeWork21/Data/EntitiesConfigure/CategoryEntityConfigure.cs b/HomeWork21/HomeWork21/Data/EntitiesConfigure/CategoryEntityConfigure.cs new file mode 100644 index 0000000..c958bb6 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/EntitiesConfigure/CategoryEntityConfigure.cs @@ -0,0 +1,19 @@ +using HomeWork21.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace HomeWork21.Data.EntitiesConfigure +{ + internal class CategoryEntityConfigure : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(k => k.Id); + builder + .Property(p => p.CategoryName) + .IsRequired() + .HasColumnName("Category_Name"); + + } + } +} diff --git a/HomeWork21/HomeWork21/Data/EntitiesConfigure/LocationEntityConfigure.cs b/HomeWork21/HomeWork21/Data/EntitiesConfigure/LocationEntityConfigure.cs new file mode 100644 index 0000000..ad51432 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/EntitiesConfigure/LocationEntityConfigure.cs @@ -0,0 +1,19 @@ +using HomeWork21.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace HomeWork21.Data.EntitiesConfigure +{ + internal class LocationEntityConfigure : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(k => k.Id); + + builder + .Property(p => p.LocationName) + .IsRequired() + .HasColumnName("Location_Name"); + } + } +} diff --git a/HomeWork21/HomeWork21/Data/EntitiesConfigure/PetEntityConfiguration.cs b/HomeWork21/HomeWork21/Data/EntitiesConfigure/PetEntityConfiguration.cs new file mode 100644 index 0000000..727f1e8 --- /dev/null +++ b/HomeWork21/HomeWork21/Data/EntitiesConfigure/PetEntityConfiguration.cs @@ -0,0 +1,41 @@ +using HomeWork21.Data.Entities; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace HomeWork21.Data.EntitiesConfigure +{ + internal class PetEntityConfiguration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.ToTable("Pet", "dbo"); + + builder.HasKey(k => k.Id); + builder.Property(p=>p.Name).IsRequired(); + builder.Property(p => p.Age).IsRequired(); + builder.Property(p => p.ImageUrl).HasColumnName("Image_Url"); + builder.Property(p => p.Description); + builder.Property(p => p.CategoryId).IsRequired().HasColumnName("Category_Id"); + builder.Property(p => p.BreedId).IsRequired().HasColumnName("Breed_Id"); + builder.Property(p => p.LocationId).IsRequired().HasColumnName("Location_Id"); + + builder + .HasOne(o => o.Category) + .WithMany(m => m.Pet) + .HasForeignKey(o => o.CategoryId) + .OnDelete(DeleteBehavior.Cascade); + + builder + .HasOne(o => o.Breed) + .WithMany(m => m.Pet) + .HasForeignKey(o => o.BreedId) + .OnDelete(DeleteBehavior.ClientSetNull); + + builder + .HasOne(o => o.Location) + .WithMany(m => m.Pet) + .HasForeignKey(o => o.LocationId) + .OnDelete(DeleteBehavior.Cascade); + } + } +} diff --git a/HomeWork21/HomeWork21/HomeWork21.csproj b/HomeWork21/HomeWork21/HomeWork21.csproj new file mode 100644 index 0000000..5cb3045 --- /dev/null +++ b/HomeWork21/HomeWork21/HomeWork21.csproj @@ -0,0 +1,37 @@ + + + + Exe + net8.0 + enable + enable + + + + + + Always + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + diff --git a/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.Designer.cs b/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.Designer.cs new file mode 100644 index 0000000..0953bd5 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.Designer.cs @@ -0,0 +1,185 @@ +// +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HomeWork21.Migrations +{ + [DbContext(typeof(AplicationDbContext))] + [Migration("20240320103851_ItialCreate")] + partial class ItialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseHiLo(modelBuilder, "EntityFrameworkHiLoSequence"); + + modelBuilder.HasSequence("EntityFrameworkHiLoSequence") + .IncrementsBy(10); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("BreedName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("breed_name"); + + b.Property("CategoryId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Breeds"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("CategoryName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Category_Name"); + + b.HasKey("Id"); + + b.ToTable("Categories"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("LocationName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Location_Name"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("Age") + .HasColumnType("real"); + + b.Property("BreedId") + .HasColumnType("int"); + + b.Property("CategoryId") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .HasColumnType("nvarchar(max)") + .HasColumnName("Image_Url"); + + b.Property("LocationId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("BreedId"); + + b.HasIndex("CategoryId"); + + b.HasIndex("LocationId"); + + b.ToTable("Pets"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Breed") + .HasForeignKey("CategoryId") + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.BreedEntity", "Breed") + .WithMany("Pet") + .HasForeignKey("BreedId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Pet") + .HasForeignKey("CategoryId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.LocationEntity", "Location") + .WithMany("Pet") + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Breed"); + + b.Navigation("Category"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Navigation("Breed"); + + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Navigation("Pet"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.cs b/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.cs new file mode 100644 index 0000000..f1fbac0 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240320103851_ItialCreate.cs @@ -0,0 +1,133 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace HomeWork21.Migrations +{ + /// + public partial class ItialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateSequence( + name: "EntityFrameworkHiLoSequence", + incrementBy: 10); + + migrationBuilder.CreateTable( + name: "Categories", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + Category_Name = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Categories", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Locations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + Location_Name = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Locations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Breeds", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + breed_name = table.Column(type: "nvarchar(max)", nullable: false), + CategoryId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Breeds", x => x.Id); + table.ForeignKey( + name: "FK_Breeds_Categories_CategoryId", + column: x => x.CategoryId, + principalTable: "Categories", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "Pets", + columns: table => new + { + Id = table.Column(type: "int", nullable: false), + Name = table.Column(type: "nvarchar(max)", nullable: false), + Age = table.Column(type: "real", nullable: false), + Image_Url = table.Column(type: "nvarchar(max)", nullable: true), + Description = table.Column(type: "nvarchar(max)", nullable: true), + CategoryId = table.Column(type: "int", nullable: false), + BreedId = table.Column(type: "int", nullable: false), + LocationId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Pets", x => x.Id); + table.ForeignKey( + name: "FK_Pets_Breeds_BreedId", + column: x => x.BreedId, + principalTable: "Breeds", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_Pets_Categories_CategoryId", + column: x => x.CategoryId, + principalTable: "Categories", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_Pets_Locations_LocationId", + column: x => x.LocationId, + principalTable: "Locations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Breeds_CategoryId", + table: "Breeds", + column: "CategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_Pets_BreedId", + table: "Pets", + column: "BreedId"); + + migrationBuilder.CreateIndex( + name: "IX_Pets_CategoryId", + table: "Pets", + column: "CategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_Pets_LocationId", + table: "Pets", + column: "LocationId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Pets"); + + migrationBuilder.DropTable( + name: "Breeds"); + + migrationBuilder.DropTable( + name: "Locations"); + + migrationBuilder.DropTable( + name: "Categories"); + + migrationBuilder.DropSequence( + name: "EntityFrameworkHiLoSequence"); + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.Designer.cs b/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.Designer.cs new file mode 100644 index 0000000..b83af59 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.Designer.cs @@ -0,0 +1,187 @@ +// +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HomeWork21.Migrations +{ + [DbContext(typeof(AplicationDbContext))] + [Migration("20240320191921_AddTablesPet")] + partial class AddTablesPet + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseHiLo(modelBuilder, "EntityFrameworkHiLoSequence"); + + modelBuilder.HasSequence("EntityFrameworkHiLoSequence") + .IncrementsBy(10); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("BreedName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("breed_name"); + + b.Property("CategoryId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Breeds"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("CategoryName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Category_Name"); + + b.HasKey("Id"); + + b.ToTable("Categories"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("LocationName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Location_Name"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("Age") + .HasColumnType("real"); + + b.Property("BreedId") + .HasColumnType("int"); + + b.Property("CategoryId") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .HasColumnType("nvarchar(max)") + .HasColumnName("Image_Url"); + + b.Property("LocationId") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("BreedId"); + + b.HasIndex("CategoryId"); + + b.HasIndex("LocationId"); + + b.ToTable("Pet", "dbo"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Breed") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.BreedEntity", "Breed") + .WithMany("Pet") + .HasForeignKey("BreedId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Pet") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.LocationEntity", "Location") + .WithMany("Pet") + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Breed"); + + b.Navigation("Category"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Navigation("Breed"); + + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Navigation("Pet"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.cs b/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.cs new file mode 100644 index 0000000..186131c --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240320191921_AddTablesPet.cs @@ -0,0 +1,182 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace HomeWork21.Migrations +{ + /// + public partial class AddTablesPet : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds"); + + migrationBuilder.DropForeignKey( + name: "FK_Pets_Breeds_BreedId", + table: "Pets"); + + migrationBuilder.DropForeignKey( + name: "FK_Pets_Categories_CategoryId", + table: "Pets"); + + migrationBuilder.DropForeignKey( + name: "FK_Pets_Locations_LocationId", + table: "Pets"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Pets", + table: "Pets"); + + migrationBuilder.EnsureSchema( + name: "dbo"); + + migrationBuilder.RenameTable( + name: "Pets", + newName: "Pet", + newSchema: "dbo"); + + migrationBuilder.RenameIndex( + name: "IX_Pets_LocationId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_LocationId"); + + migrationBuilder.RenameIndex( + name: "IX_Pets_CategoryId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_CategoryId"); + + migrationBuilder.RenameIndex( + name: "IX_Pets_BreedId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_BreedId"); + + migrationBuilder.AddPrimaryKey( + name: "PK_Pet", + schema: "dbo", + table: "Pet", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Breeds_BreedId", + schema: "dbo", + table: "Pet", + column: "BreedId", + principalTable: "Breeds", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Categories_CategoryId", + schema: "dbo", + table: "Pet", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Locations_LocationId", + schema: "dbo", + table: "Pet", + column: "LocationId", + principalTable: "Locations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Breeds_BreedId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Categories_CategoryId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Locations_LocationId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Pet", + schema: "dbo", + table: "Pet"); + + migrationBuilder.RenameTable( + name: "Pet", + schema: "dbo", + newName: "Pets"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_LocationId", + table: "Pets", + newName: "IX_Pets_LocationId"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_CategoryId", + table: "Pets", + newName: "IX_Pets_CategoryId"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_BreedId", + table: "Pets", + newName: "IX_Pets_BreedId"); + + migrationBuilder.AddPrimaryKey( + name: "PK_Pets", + table: "Pets", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pets_Breeds_BreedId", + table: "Pets", + column: "BreedId", + principalTable: "Breeds", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pets_Categories_CategoryId", + table: "Pets", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pets_Locations_LocationId", + table: "Pets", + column: "LocationId", + principalTable: "Locations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.Designer.cs b/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.Designer.cs new file mode 100644 index 0000000..00d7b16 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.Designer.cs @@ -0,0 +1,191 @@ +// +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HomeWork21.Migrations +{ + [DbContext(typeof(AplicationDbContext))] + [Migration("20240321040818_ColumName")] + partial class ColumName + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseHiLo(modelBuilder, "EntityFrameworkHiLoSequence"); + + modelBuilder.HasSequence("EntityFrameworkHiLoSequence") + .IncrementsBy(10); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("BreedName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Breed_name"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Breeds"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("CategoryName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Category_Name"); + + b.HasKey("Id"); + + b.ToTable("Categories"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("LocationName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Location_Name"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("Age") + .HasColumnType("real"); + + b.Property("BreedId") + .HasColumnType("int") + .HasColumnName("Breed_Id"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .HasColumnType("nvarchar(max)") + .HasColumnName("Image_Url"); + + b.Property("LocationId") + .HasColumnType("int") + .HasColumnName("Location_Id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("BreedId"); + + b.HasIndex("CategoryId"); + + b.HasIndex("LocationId"); + + b.ToTable("Pet", "dbo"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Breed") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.BreedEntity", "Breed") + .WithMany("Pet") + .HasForeignKey("BreedId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Pet") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.LocationEntity", "Location") + .WithMany("Pet") + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Breed"); + + b.Navigation("Category"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Navigation("Breed"); + + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Navigation("Pet"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.cs b/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.cs new file mode 100644 index 0000000..46bc0ae --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240321040818_ColumName.cs @@ -0,0 +1,226 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace HomeWork21.Migrations +{ + /// + public partial class ColumName : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Breeds_BreedId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Categories_CategoryId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Locations_LocationId", + schema: "dbo", + table: "Pet"); + + migrationBuilder.RenameColumn( + name: "LocationId", + schema: "dbo", + table: "Pet", + newName: "Location_Id"); + + migrationBuilder.RenameColumn( + name: "CategoryId", + schema: "dbo", + table: "Pet", + newName: "Category_Id"); + + migrationBuilder.RenameColumn( + name: "BreedId", + schema: "dbo", + table: "Pet", + newName: "Breed_Id"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_LocationId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_Location_Id"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_CategoryId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_Category_Id"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_BreedId", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_Breed_Id"); + + migrationBuilder.RenameColumn( + name: "breed_name", + table: "Breeds", + newName: "Breed_name"); + + migrationBuilder.RenameColumn( + name: "CategoryId", + table: "Breeds", + newName: "Category_Id"); + + migrationBuilder.RenameIndex( + name: "IX_Breeds_CategoryId", + table: "Breeds", + newName: "IX_Breeds_Category_Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Breeds_Categories_Category_Id", + table: "Breeds", + column: "Category_Id", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Breeds_Breed_Id", + schema: "dbo", + table: "Pet", + column: "Breed_Id", + principalTable: "Breeds", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Categories_Category_Id", + schema: "dbo", + table: "Pet", + column: "Category_Id", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Locations_Location_Id", + schema: "dbo", + table: "Pet", + column: "Location_Id", + principalTable: "Locations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Breeds_Categories_Category_Id", + table: "Breeds"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Breeds_Breed_Id", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Categories_Category_Id", + schema: "dbo", + table: "Pet"); + + migrationBuilder.DropForeignKey( + name: "FK_Pet_Locations_Location_Id", + schema: "dbo", + table: "Pet"); + + migrationBuilder.RenameColumn( + name: "Location_Id", + schema: "dbo", + table: "Pet", + newName: "LocationId"); + + migrationBuilder.RenameColumn( + name: "Category_Id", + schema: "dbo", + table: "Pet", + newName: "CategoryId"); + + migrationBuilder.RenameColumn( + name: "Breed_Id", + schema: "dbo", + table: "Pet", + newName: "BreedId"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_Location_Id", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_LocationId"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_Category_Id", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_CategoryId"); + + migrationBuilder.RenameIndex( + name: "IX_Pet_Breed_Id", + schema: "dbo", + table: "Pet", + newName: "IX_Pet_BreedId"); + + migrationBuilder.RenameColumn( + name: "Breed_name", + table: "Breeds", + newName: "breed_name"); + + migrationBuilder.RenameColumn( + name: "Category_Id", + table: "Breeds", + newName: "CategoryId"); + + migrationBuilder.RenameIndex( + name: "IX_Breeds_Category_Id", + table: "Breeds", + newName: "IX_Breeds_CategoryId"); + + migrationBuilder.AddForeignKey( + name: "FK_Breeds_Categories_CategoryId", + table: "Breeds", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Breeds_BreedId", + schema: "dbo", + table: "Pet", + column: "BreedId", + principalTable: "Breeds", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Categories_CategoryId", + schema: "dbo", + table: "Pet", + column: "CategoryId", + principalTable: "Categories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Pet_Locations_LocationId", + schema: "dbo", + table: "Pet", + column: "LocationId", + principalTable: "Locations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.Designer.cs b/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.Designer.cs new file mode 100644 index 0000000..7c965ca --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.Designer.cs @@ -0,0 +1,191 @@ +// +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HomeWork21.Migrations +{ + [DbContext(typeof(AplicationDbContext))] + [Migration("20240321041029_ColumNameN")] + partial class ColumNameN + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseHiLo(modelBuilder, "EntityFrameworkHiLoSequence"); + + modelBuilder.HasSequence("EntityFrameworkHiLoSequence") + .IncrementsBy(10); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("BreedName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Breed_Name"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Breeds"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("CategoryName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Category_Name"); + + b.HasKey("Id"); + + b.ToTable("Categories"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("LocationName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Location_Name"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("Age") + .HasColumnType("real"); + + b.Property("BreedId") + .HasColumnType("int") + .HasColumnName("Breed_Id"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .HasColumnType("nvarchar(max)") + .HasColumnName("Image_Url"); + + b.Property("LocationId") + .HasColumnType("int") + .HasColumnName("Location_Id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("BreedId"); + + b.HasIndex("CategoryId"); + + b.HasIndex("LocationId"); + + b.ToTable("Pet", "dbo"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Breed") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.BreedEntity", "Breed") + .WithMany("Pet") + .HasForeignKey("BreedId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Pet") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.LocationEntity", "Location") + .WithMany("Pet") + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Breed"); + + b.Navigation("Category"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Navigation("Breed"); + + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Navigation("Pet"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.cs b/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.cs new file mode 100644 index 0000000..5e9d328 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/20240321041029_ColumNameN.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace HomeWork21.Migrations +{ + /// + public partial class ColumNameN : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Breed_name", + table: "Breeds", + newName: "Breed_Name"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Breed_Name", + table: "Breeds", + newName: "Breed_name"); + } + } +} diff --git a/HomeWork21/HomeWork21/Migrations/AplicationDbContextModelSnapshot.cs b/HomeWork21/HomeWork21/Migrations/AplicationDbContextModelSnapshot.cs new file mode 100644 index 0000000..1f5e203 --- /dev/null +++ b/HomeWork21/HomeWork21/Migrations/AplicationDbContextModelSnapshot.cs @@ -0,0 +1,188 @@ +// +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HomeWork21.Migrations +{ + [DbContext(typeof(AplicationDbContext))] + partial class AplicationDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseHiLo(modelBuilder, "EntityFrameworkHiLoSequence"); + + modelBuilder.HasSequence("EntityFrameworkHiLoSequence") + .IncrementsBy(10); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("BreedName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Breed_Name"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Breeds"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("CategoryName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Category_Name"); + + b.HasKey("Id"); + + b.ToTable("Categories"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("LocationName") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("Location_Name"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseHiLo(b.Property("Id")); + + b.Property("Age") + .HasColumnType("real"); + + b.Property("BreedId") + .HasColumnType("int") + .HasColumnName("Breed_Id"); + + b.Property("CategoryId") + .HasColumnType("int") + .HasColumnName("Category_Id"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .HasColumnType("nvarchar(max)") + .HasColumnName("Image_Url"); + + b.Property("LocationId") + .HasColumnType("int") + .HasColumnName("Location_Id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("BreedId"); + + b.HasIndex("CategoryId"); + + b.HasIndex("LocationId"); + + b.ToTable("Pet", "dbo"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Breed") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.PetEntity", b => + { + b.HasOne("HomeWork21.Data.Entities.BreedEntity", "Breed") + .WithMany("Pet") + .HasForeignKey("BreedId") + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.CategoryEntity", "Category") + .WithMany("Pet") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HomeWork21.Data.Entities.LocationEntity", "Location") + .WithMany("Pet") + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Breed"); + + b.Navigation("Category"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.BreedEntity", b => + { + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.CategoryEntity", b => + { + b.Navigation("Breed"); + + b.Navigation("Pet"); + }); + + modelBuilder.Entity("HomeWork21.Data.Entities.LocationEntity", b => + { + b.Navigation("Pet"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/HomeWork21/HomeWork21/Models/Breed.cs b/HomeWork21/HomeWork21/Models/Breed.cs new file mode 100644 index 0000000..b98a913 --- /dev/null +++ b/HomeWork21/HomeWork21/Models/Breed.cs @@ -0,0 +1,9 @@ +namespace HomeWork21.Models +{ + internal class Breed + { + public int Id { get; set; } + public string Name { get; set; } = null!; + public Category? Category { get; set; } + } +} diff --git a/HomeWork21/HomeWork21/Models/Category.cs b/HomeWork21/HomeWork21/Models/Category.cs new file mode 100644 index 0000000..51eff11 --- /dev/null +++ b/HomeWork21/HomeWork21/Models/Category.cs @@ -0,0 +1,8 @@ +namespace HomeWork21.Models +{ + internal class Category + { + public int Id { get; set; } + public string Name { get; set; } = null; + } +} diff --git a/HomeWork21/HomeWork21/Models/Location.cs b/HomeWork21/HomeWork21/Models/Location.cs new file mode 100644 index 0000000..a6a444d --- /dev/null +++ b/HomeWork21/HomeWork21/Models/Location.cs @@ -0,0 +1,8 @@ +namespace HomeWork21.Models +{ + internal class Location + { + public int Id { get; set; } + public string Name { get; set; } = null!; + } +} diff --git a/HomeWork21/HomeWork21/Models/Pet.cs b/HomeWork21/HomeWork21/Models/Pet.cs new file mode 100644 index 0000000..2fd80cf --- /dev/null +++ b/HomeWork21/HomeWork21/Models/Pet.cs @@ -0,0 +1,15 @@ +namespace HomeWork21.Models +{ + internal class Pet + { + public int Id { get; set; } + public string Name { get; set; } = null!; + public Category? Category { get; set; } + public Breed? Breed { get; set; } + public float Age { get; set; } + public Location? Location { get; set; } + public string? ImageUrl { get; set; } + public string? Discription { get; set; } + + } +} diff --git a/HomeWork21/HomeWork21/Program.cs b/HomeWork21/HomeWork21/Program.cs new file mode 100644 index 0000000..37164af --- /dev/null +++ b/HomeWork21/HomeWork21/Program.cs @@ -0,0 +1,44 @@ +using HomeWork21; +using HomeWork21.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +class Program +{ + static async Task Main(string[] args) + { + void ConfigureService(ServiceCollection serviceCollection, IConfiguration confuration) + { + var conectionString = confuration.GetConnectionString("DefaultConnection"); + serviceCollection + .AddDbContext + (o => o.UseSqlServer(conectionString)); + + serviceCollection + .AddLogging(log => log.AddConsole()) + .AddTransient(); + } + + IConfiguration configuration = new ConfigurationBuilder() + .AddJsonFile("config.json") + .Build(); + + var services = new ServiceCollection(); + ConfigureService(services, configuration); + var provider = services.BuildServiceProvider(); + + var migrationSection = configuration.GetSection("Migration"); + var isNeedMigration = migrationSection.GetSection("IsNeedMigration"); + + if (bool.Parse(isNeedMigration.Value!)) + { + var dbContext = provider.GetService(); + await dbContext!.Database.MigrateAsync(); + } + + var app = provider.GetService(); + await app!.StartUpAsync(); + } +} diff --git a/HomeWork21/HomeWork21/config.json b/HomeWork21/HomeWork21/config.json new file mode 100644 index 0000000..463a066 --- /dev/null +++ b/HomeWork21/HomeWork21/config.json @@ -0,0 +1,8 @@ +{ + "Migration": { + "IsNeedMigration": true + }, + "ConnectionStrings": { + "DefaultConnection": "Server=127.0.0.1,1434;Database=AdventureWorks;User ID=sa;Password=1My_password;TrustServerCertificate=true" + } +}