/
ivanstrike
/
tasker
Обзор
Документация
Войти
/
ivanstrike
/
tasker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lab4/Server/Data/ApplicationDbContext.cs
64 строки
2 KB
ivanstrike
laba4
21 дек 2025, 21:13
21 дек 2025, 21:13
e9bb9a2
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using TaskerMQ.Server.Models; namespace TaskerMQ.Server.Data; public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<User> Users => Set<User>(); public DbSet<Project> Projects => Set<Project>(); public DbSet<TaskItem> Tasks => Set<TaskItem>(); public DbSet<IdempotentRequest> IdempotentRequests => Set<IdempotentRequest>(); protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<User>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.Username).IsUnique(); entity.HasIndex(e => e.Email).IsUnique(); entity.Property(e => e.CreatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); entity.Property(e => e.UpdatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); }); modelBuilder.Entity<Project>(entity => { entity.HasKey(e => e.Id); entity.HasOne(e => e.User) .WithMany(u => u.Projects) .HasForeignKey(e => e.UserId) .OnDelete(DeleteBehavior.Cascade); entity.Property(e => e.CreatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); entity.Property(e => e.UpdatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); }); modelBuilder.Entity<TaskItem>(entity => { entity.HasKey(e => e.Id); entity.HasOne(e => e.Project) .WithMany(p => p.Tasks) .HasForeignKey(e => e.ProjectId) .OnDelete(DeleteBehavior.Cascade); entity.HasOne(e => e.User) .WithMany(u => u.Tasks) .HasForeignKey(e => e.UserId) .OnDelete(DeleteBehavior.Cascade); entity.Property(e => e.Status).HasConversion<string>(); entity.Property(e => e.CreatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); entity.Property(e => e.UpdatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); }); modelBuilder.Entity<IdempotentRequest>(entity => { entity.HasKey(e => e.RequestId); entity.Property(e => e.ProcessedAt).HasDefaultValueSql("CURRENT_TIMESTAMP"); }); } }