diff --git a/Demo/Migrations/20241025085326_InitialCreate.Designer.cs b/Demo/Migrations/20241025085326_InitialCreate.Designer.cs
new file mode 100644
index 0000000..c3f3dd9
--- /dev/null
+++ b/Demo/Migrations/20241025085326_InitialCreate.Designer.cs
@@ -0,0 +1,123 @@
+//
+using System;
+using Demo.Data.RemoteData.RemoteDataBase;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace Demo.Migrations
+{
+ [DbContext(typeof(RemoteDatabaseContext))]
+ [Migration("20241025085326_InitialCreate")]
+ partial class InitialCreate
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Groups");
+ });
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.Property("Date")
+ .HasColumnType("date");
+
+ b.Property("IsAttedance")
+ .HasColumnType("boolean");
+
+ b.Property("LessonNumber")
+ .HasColumnType("integer");
+
+ b.Property("GroupId")
+ .HasColumnType("integer");
+
+ b.Property("UserDaoUserId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId", "Date", "IsAttedance", "LessonNumber");
+
+ b.HasIndex("UserDaoUserId");
+
+ b.ToTable("PresenceDaos");
+ });
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
+ {
+ b.Property("UserId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("UserId"));
+
+ b.Property("FIO")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("GroupId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId");
+
+ b.HasIndex("GroupId");
+
+ b.ToTable("Users");
+ });
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.PresenceDao", b =>
+ {
+ b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", "UserDao")
+ .WithMany()
+ .HasForeignKey("UserDaoUserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("UserDao");
+ });
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.UserDao", b =>
+ {
+ b.HasOne("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", "Group")
+ .WithMany("Users")
+ .HasForeignKey("GroupId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Group");
+ });
+
+ modelBuilder.Entity("Demo.Data.RemoteData.RemoteDataBase.DAO.GroupDao", b =>
+ {
+ b.Navigation("Users");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Demo/Migrations/20241025085326_InitialCreate.cs b/Demo/Migrations/20241025085326_InitialCreate.cs
new file mode 100644
index 0000000..643f15c
--- /dev/null
+++ b/Demo/Migrations/20241025085326_InitialCreate.cs
@@ -0,0 +1,94 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace Demo.Migrations
+{
+ ///
+ public partial class InitialCreate : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Groups",
+ columns: table => new
+ {
+ Id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Name = table.Column(type: "text", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Groups", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Users",
+ columns: table => new
+ {
+ UserId = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ FIO = table.Column(type: "text", nullable: false),
+ GroupId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Users", x => x.UserId);
+ table.ForeignKey(
+ name: "FK_Users_Groups_GroupId",
+ column: x => x.GroupId,
+ principalTable: "Groups",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "PresenceDaos",
+ columns: table => new
+ {
+ UserId = table.Column(type: "integer", nullable: false),
+ IsAttedance = table.Column(type: "boolean", nullable: false),
+ Date = table.Column(type: "date", nullable: false),
+ LessonNumber = table.Column(type: "integer", nullable: false),
+ UserDaoUserId = table.Column(type: "integer", nullable: false),
+ GroupId = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_PresenceDaos", x => new { x.UserId, x.Date, x.IsAttedance, x.LessonNumber });
+ table.ForeignKey(
+ name: "FK_PresenceDaos_Users_UserDaoUserId",
+ column: x => x.UserDaoUserId,
+ principalTable: "Users",
+ principalColumn: "UserId",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_PresenceDaos_UserDaoUserId",
+ table: "PresenceDaos",
+ column: "UserDaoUserId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Users_GroupId",
+ table: "Users",
+ column: "GroupId");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "PresenceDaos");
+
+ migrationBuilder.DropTable(
+ name: "Users");
+
+ migrationBuilder.DropTable(
+ name: "Groups");
+ }
+ }
+}