/
ivanstrike
/
tasker
Обзор
Документация
Войти
/
ivanstrike
/
tasker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Data/ApplicationDbContext.cs
75 строк
2 KB
ivanstrike
Init
20 окт 2025, 00:25
20 окт 2025, 00:25
db81298
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using TaskerApi.Models; using TaskStatus = TaskerApi.Models.TaskStatus; namespace TaskerApi.Data; /// <summary> /// Контекст базы данных приложения /// </summary> public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<User> Users { get; set; } = null!; public DbSet<Project> Projects { get; set; } = null!; public DbSet<TaskItem> Tasks { get; set; } = null!; public DbSet<IdempotentRequest> IdempotentRequests { get; set; } = null!; public DbSet<RateLimitInfo> RateLimitInfos { get; set; } = null!; protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<User>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.Email).IsUnique(); entity.HasIndex(e => e.Username).IsUnique(); entity.HasMany(e => e.Projects) .WithOne(e => e.Owner) .HasForeignKey(e => e.OwnerId) .OnDelete(DeleteBehavior.Restrict); entity.HasMany(e => e.Tasks) .WithOne(e => e.AssignedTo) .HasForeignKey(e => e.AssignedToId) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Entity<Project>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.Name); entity.HasMany(e => e.Tasks) .WithOne(e => e.Project) .HasForeignKey(e => e.ProjectId) .OnDelete(DeleteBehavior.SetNull); }); modelBuilder.Entity<TaskItem>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.Status); entity.HasIndex(e => e.Priority); entity.HasIndex(e => e.DueDate); }); modelBuilder.Entity<IdempotentRequest>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.IdempotencyKey).IsUnique(); }); modelBuilder.Entity<RateLimitInfo>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.ClientId); }); } }