using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; namespace TaskTrackerDatabaseImplement; public partial class TasktrackerContext : DbContext { public TasktrackerContext() { } public TasktrackerContext(DbContextOptions options) : base(options) { } public virtual DbSet Companies { get; set; } public virtual DbSet Employees { get; set; } public virtual DbSet Projects { get; set; } public virtual DbSet Tasks { get; set; } public virtual DbSet TaskAssigments { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) #warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263. => optionsBuilder.UseNpgsql("Host=192.168.56.101;Port=5432;Database=tasktracker;Username=postgres;Password=******"); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("company_pkey"); entity.ToTable("company", tb => tb.HasComment("Сущность \"Компания\"")); entity.Property(e => e.Id) .HasComment("Идентификатор сущности \"Компания\"") .UseIdentityAlwaysColumn() .HasColumnName("id"); entity.Property(e => e.Login) .HasColumnType("character varying") .HasColumnName("login"); entity.Property(e => e.Name) .HasMaxLength(50) .HasDefaultValueSql("'Моя компания'::character varying") .HasComment("Название компании") .HasColumnName("name"); entity.Property(e => e.Password) .HasColumnType("character varying") .HasColumnName("password"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("employee_pkey"); entity.ToTable("employee", tb => tb.HasComment("Сущность \"Сотрудник\"")); entity.Property(e => e.Id) .HasComment("Идентификатор сущности \"Сотрудник\"") .UseIdentityAlwaysColumn() .HasColumnName("id"); entity.Property(e => e.CompanyId) .HasComment("Ссылка на идентификатор компании в которой работает сотрудник") .HasColumnName("company_id"); entity.Property(e => e.Email) .HasMaxLength(50) .HasDefaultValueSql("'email сотрудника'::character varying") .HasComment("E-mail сотрудника") .HasColumnName("email"); entity.Property(e => e.JobTitle) .HasMaxLength(50) .HasDefaultValueSql("'Должность'::character varying") .HasComment("Должность сотрудника") .HasColumnName("job_title"); entity.Property(e => e.Name) .HasMaxLength(50) .HasDefaultValueSql("'Сотрудник'::character varying") .HasComment("ФИО сотрудника") .HasColumnName("name"); entity.HasOne(d => d.Company).WithMany(p => p.Employees) .HasForeignKey(d => d.CompanyId) .OnDelete(DeleteBehavior.SetNull) .HasConstraintName("employee_company_id_fkey"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("project_pkey"); entity.ToTable("project", tb => tb.HasComment("Сущность \"Проект\"")); entity.Property(e => e.Id) .HasComment("Идентификатор сущности \"Проект\"") .UseIdentityAlwaysColumn() .HasColumnName("id"); entity.Property(e => e.CompanyId) .HasComment("Ссылка на компанию, делающая проект") .HasColumnName("company_id"); entity.Property(e => e.Name) .HasMaxLength(50) .HasDefaultValueSql("'Проект'::character varying") .HasComment("Название проекта") .HasColumnName("name"); entity.Property(e => e.State) .HasMaxLength(50) .HasDefaultValueSql("'Создан'::character varying") .HasComment("Статус проекта") .HasColumnName("state"); entity.HasOne(d => d.Company).WithMany(p => p.Projects) .HasForeignKey(d => d.CompanyId) .HasConstraintName("project_company_id_fkey"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("task_pkey"); entity.ToTable("task", tb => tb.HasComment("Сущность \"Задача\"")); entity.Property(e => e.Id) .HasComment("Идентификатор сущности \"Задача\"") .UseIdentityAlwaysColumn() .HasColumnName("id"); entity.Property(e => e.Deadline) .HasDefaultValueSql("(CURRENT_DATE + '7 days'::interval)") .HasComment("Дедлайн") .HasColumnType("timestamp without time zone") .HasColumnName("deadline"); entity.Property(e => e.EndDate) .HasComment("Дата выполнения задачи") .HasColumnType("timestamp without time zone") .HasColumnName("end_date"); entity.Property(e => e.Name) .HasMaxLength(50) .HasDefaultValueSql("'Задача'::character varying") .HasComment("Название задачи") .HasColumnName("name"); entity.Property(e => e.ProjectId) .HasComment("Ссылка на проект задачи") .HasColumnName("project_id"); entity.Property(e => e.StartDate) .HasDefaultValueSql("CURRENT_DATE") .HasComment("Дата создания задачи") .HasColumnType("timestamp without time zone") .HasColumnName("start_date"); entity.Property(e => e.State) .HasMaxLength(50) .HasDefaultValueSql("'Задача созадна'::character varying") .HasComment("Статус задачи") .HasColumnName("state"); entity.HasOne(d => d.Project).WithMany(p => p.Tasks) .HasForeignKey(d => d.ProjectId) .HasConstraintName("task_project_id_fkey"); }); modelBuilder.Entity(entity => { entity.HasKey(e => new { e.EmployeeId, e.TaskId }).HasName("pk_employee_task"); entity.ToTable("task_assigment", tb => tb.HasComment("Сущность \"Назначение на задачу\"")); entity.Property(e => e.EmployeeId) .HasComment("Ссылка на сотрудника") .HasColumnName("employee_id"); entity.Property(e => e.TaskId) .HasComment("Ссылка на задачу") .HasColumnName("task_id"); entity.Property(e => e.Role) .HasMaxLength(50) .HasDefaultValueSql("'Роль'::character varying") .HasComment("Роль в задаче") .HasColumnName("role"); entity.HasOne(d => d.Employee).WithMany(p => p.TaskAssigments) .HasForeignKey(d => d.EmployeeId).IsRequired() .HasConstraintName("employee_task_employee_id_fkey"); entity.HasOne(d => d.Task).WithMany(p => p.TaskAssigments) .HasForeignKey(d => d.TaskId).IsRequired() .HasConstraintName("employee_task_task_id_fkey"); }); modelBuilder.HasSequence("company_id_seq"); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); }