using Demo.Data.RemoteData.RemoteDataBase.DAO; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo.Data.RemoteData.RemoteDataBase { public class RemoteDatabaseContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseNpgsql("Host=45.67.56.214;" + "Port=5421;" + "Username=user10;" + "Database=user10;" + "Password=FY1rOnvu"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Настройка ключа и генерации GroupDao modelBuilder.Entity() .HasKey(group => group.Id); // Устанавливаем Id как первичный ключ modelBuilder.Entity() .Property(group => group.Id) .ValueGeneratedOnAdd(); // Указываем, что Id будет автоматически генерироваться при добавлении // Настройка ключа и генерации UserDao modelBuilder.Entity() .HasKey(user => user.Guid); // Устанавливаем Guid как первичный ключ modelBuilder.Entity() .Property(user => user.Guid) .ValueGeneratedOnAdd(); // Указываем, что Guid будет автоматически генерироваться при добавлении // Настройка составного ключа PresenceDao modelBuilder.Entity() .HasKey(presense => new // Определяем составной ключ { presense.UserGuid, presense.Date, presense.IsAttedance, presense.LessonNumber }); // Настройка связи между UserDao и PresenceDao modelBuilder.Entity() .HasOne(p => p.UserDao) // Указываем, что PresenceDao имеет одну связь с UserDao .WithMany() // Указываем, что у UserDao может быть много записей PresenceDao .HasForeignKey(p => p.UserGuid) // Указываем внешний ключ UserGuid .OnDelete(DeleteBehavior.Cascade); // Указываем поведение при удалении (удаление связанных записей) } // Определение наборов данных для каждой сущности public DbSet Groups { get; set; } // Набор данных для GroupDao public DbSet Users { get; set; } // Набор данных для UserDao public DbSet PresenceDaos { get; set; } // Набор данных для PresenceDao } }