pr1/Demo/Data/RemoteData/RemoteDataBase/RemoteDatabaseContext.cs

62 lines
3.1 KiB
C#
Raw Normal View History

2024-11-17 16:24:01 +00:00
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<GroupDao>()
.HasKey(group => group.Id); // Устанавливаем Id как первичный ключ
modelBuilder.Entity<GroupDao>()
.Property(group => group.Id)
.ValueGeneratedOnAdd(); // Указываем, что Id будет автоматически генерироваться при добавлении
// Настройка ключа и генерации UserDao
modelBuilder.Entity<UserDao>()
.HasKey(user => user.Guid); // Устанавливаем Guid как первичный ключ
modelBuilder.Entity<UserDao>()
.Property(user => user.Guid)
.ValueGeneratedOnAdd(); // Указываем, что Guid будет автоматически генерироваться при добавлении
// Настройка составного ключа PresenceDao
modelBuilder.Entity<PresenceDao>()
.HasKey(presense => new // Определяем составной ключ
{
presense.UserGuid,
presense.Date,
presense.IsAttedance,
presense.LessonNumber
});
// Настройка связи между UserDao и PresenceDao
modelBuilder.Entity<PresenceDao>()
.HasOne(p => p.UserDao) // Указываем, что PresenceDao имеет одну связь с UserDao
.WithMany() // Указываем, что у UserDao может быть много записей PresenceDao
.HasForeignKey(p => p.UserGuid) // Указываем внешний ключ UserGuid
.OnDelete(DeleteBehavior.Cascade); // Указываем поведение при удалении (удаление связанных записей)
}
// Определение наборов данных для каждой сущности
public DbSet<GroupDao> Groups { get; set; } // Набор данных для GroupDao
public DbSet<UserDao> Users { get; set; } // Набор данных для UserDao
public DbSet<PresenceDao> PresenceDaos { get; set; } // Набор данных для PresenceDao
}
}