подключился к БД

This commit is contained in:
ityurner02@mail.ru 2023-04-09 18:58:02 +04:00
parent ae7685323e
commit e66bd33dcb
10 changed files with 439 additions and 0 deletions

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по дисциплинам. Содержит два поля: id (тип integer), название (тип varchar).
/// </summary>
public partial class Discipline
{
/// <summary>
/// Идентификатор дисциплины
/// </summary>
public int DisciplineId { get; set; }
/// <summary>
/// Название
/// </summary>
public string Title { get; set; } = null!;
public virtual ICollection<Statement> Statements { get; } = new List<Statement>();
}

View File

@ -0,0 +1,205 @@
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace ElectronicJournalDatabaseImplement;
public partial class ElectronicJournalContext : DbContext
{
public ElectronicJournalContext()
{
}
public ElectronicJournalContext(DbContextOptions<ElectronicJournalContext> options)
: base(options)
{
}
public virtual DbSet<Discipline> Disciplines { get; set; }
public virtual DbSet<Group> Groups { get; set; }
public virtual DbSet<ResultOfControl> ResultOfControls { get; set; }
public virtual DbSet<Statement> Statements { get; set; }
public virtual DbSet<Student> Students { get; set; }
public virtual DbSet<Teacher> Teachers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseNpgsql("Host=192.168.56.101;Port=5432;Database=ElectronicJournal;Username=postgres;Password=qazwsx");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Discipline>(entity =>
{
entity.HasKey(e => e.DisciplineId).HasName("Discipline_pkey");
entity.ToTable("Discipline", tb => tb.HasComment("Данная таблица отвечает за хранение данных по дисциплинам. Содержит два поля: id (тип integer), название (тип varchar)."));
entity.Property(e => e.DisciplineId)
.HasDefaultValueSql("nextval('sequence_discipline'::regclass)")
.HasComment("Идентификатор дисциплины")
.HasColumnName("discipline_id");
entity.Property(e => e.Title)
.HasMaxLength(255)
.HasComment("Название")
.HasColumnName("title");
});
modelBuilder.Entity<Group>(entity =>
{
entity.HasKey(e => e.GroupId).HasName("Group_pkey");
entity.ToTable("Group", tb => tb.HasComment("Данная таблица отвечает за хранение данных по группам. Содержит три поля: id (тип integer), название (тип varchar), курс (тип integer)."));
entity.Property(e => e.GroupId)
.HasDefaultValueSql("nextval('sequence_group'::regclass)")
.HasComment("Идентификатор группы")
.HasColumnName("group_id");
entity.Property(e => e.Course)
.HasDefaultValueSql("1")
.HasComment("Курс")
.HasColumnName("course");
entity.Property(e => e.Title)
.HasMaxLength(12)
.HasComment("Название")
.HasColumnName("title");
});
modelBuilder.Entity<ResultOfControl>(entity =>
{
entity.HasKey(e => e.ResultOfControlId).HasName("Result_of_control_pkey");
entity.ToTable("Result_of_control", tb => tb.HasComment("Данная таблица отвечает за хранение данных по результатам контроля. Содержит шесть полей: id (тип integer), форма контроля (тип varchar), дата (тип date), оценка (тип varchar), внешний ключ на студента (тип integer), внешний ключ на ведомость (тип integer)."));
entity.Property(e => e.ResultOfControlId)
.HasDefaultValueSql("nextval('sequence_result_of_control'::regclass)")
.HasComment("Идентификатор результата контроля")
.HasColumnName("result_of_control_id");
entity.Property(e => e.Date)
.HasComment("Дата")
.HasColumnName("date");
entity.Property(e => e.Form)
.HasMaxLength(255)
.HasDefaultValueSql("'зачет'::character varying")
.HasComment("Форма контроля")
.HasColumnName("form");
entity.Property(e => e.Mark)
.HasMaxLength(255)
.HasDefaultValueSql("'не зачтено'::character varying")
.HasComment("Оценка")
.HasColumnName("mark");
entity.Property(e => e.StatementId)
.HasComment("Внешний ключ на ведомость")
.HasColumnName("statement_id");
entity.Property(e => e.StudentId)
.HasComment("Внешний ключ на студента")
.HasColumnName("student_id");
entity.HasOne(d => d.Statement).WithMany(p => p.ResultOfControls)
.HasForeignKey(d => d.StatementId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Result_of_control_statement_id_fkey");
entity.HasOne(d => d.Student).WithMany(p => p.ResultOfControls)
.HasForeignKey(d => d.StudentId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Result_of_control_student_id_fkey");
});
modelBuilder.Entity<Statement>(entity =>
{
entity.HasKey(e => e.StatementId).HasName("Statement_pkey");
entity.ToTable("Statement", tb => tb.HasComment("Данная таблица отвечает за хранение данных по ведомостям. Содержит пять полей: id (тип integer), дата (тип date), внешний ключ на дисциплину (тип integer), внешний ключ на группу (тип integer), внешний ключ на преподавателя (тип integer)."));
entity.Property(e => e.StatementId)
.HasDefaultValueSql("nextval('sequence_statement'::regclass)")
.HasComment("Идентификатор ведомости")
.HasColumnName("statement_id");
entity.Property(e => e.Date)
.HasComment("Дата")
.HasColumnName("date");
entity.Property(e => e.DisciplineId)
.HasComment("Внешний ключ на дисциплину")
.HasColumnName("discipline_id");
entity.Property(e => e.GroupId)
.HasComment("Внешний ключ на группу")
.HasColumnName("group_id");
entity.Property(e => e.TeacherId)
.HasComment("Внешний ключ на преподавателя")
.HasColumnName("teacher_id");
entity.HasOne(d => d.Discipline).WithMany(p => p.Statements)
.HasForeignKey(d => d.DisciplineId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Statement_discipline_id_fkey");
entity.HasOne(d => d.Group).WithMany(p => p.Statements)
.HasForeignKey(d => d.GroupId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Statement_group_id_fkey");
entity.HasOne(d => d.Teacher).WithMany(p => p.Statements)
.HasForeignKey(d => d.TeacherId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Statement_teacher_id_fkey");
});
modelBuilder.Entity<Student>(entity =>
{
entity.HasKey(e => e.StudentId).HasName("Student_pkey");
entity.ToTable("Student", tb => tb.HasComment("Данная таблица отвечает за хранение данных по студентам. Содержит три поля: id (тип integer), имя (тип varchar), внешний ключ на группу (тип integer)."));
entity.Property(e => e.StudentId)
.HasDefaultValueSql("nextval('sequence_student'::regclass)")
.HasComment("Идентификатор студента")
.HasColumnName("student_id");
entity.Property(e => e.GroupId)
.HasComment("Внешний ключ на группу")
.HasColumnName("group_id");
entity.Property(e => e.Name)
.HasMaxLength(255)
.HasComment("Имя")
.HasColumnName("name");
entity.HasOne(d => d.Group).WithMany(p => p.Students)
.HasForeignKey(d => d.GroupId)
.OnDelete(DeleteBehavior.Restrict)
.HasConstraintName("Student_group_id_fkey");
});
modelBuilder.Entity<Teacher>(entity =>
{
entity.HasKey(e => e.TeacherId).HasName("Teacher_pkey");
entity.ToTable("Teacher", tb => tb.HasComment("Данная таблица отвечает за хранение данных по преподавателям. Содержит три поля: id (тип integer), имя (тип varchar), ученое звание (тип integer)."));
entity.Property(e => e.TeacherId)
.HasDefaultValueSql("nextval('sequence_teacher'::regclass)")
.HasComment("Идентификатор преподавателя")
.HasColumnName("teacher_id");
entity.Property(e => e.AcademicTitle)
.HasMaxLength(255)
.HasComment("Ученое звание")
.HasColumnName("academic_title");
entity.Property(e => e.Name)
.HasMaxLength(255)
.HasComment("Имя")
.HasColumnName("name");
});
modelBuilder.HasSequence("sequence_discipline");
modelBuilder.HasSequence("sequence_group");
modelBuilder.HasSequence("sequence_result_of_control");
modelBuilder.HasSequence("sequence_statement");
modelBuilder.HasSequence("sequence_student");
modelBuilder.HasSequence("sequence_teacher");
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

View File

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFramework" Version="6.4.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ElectronicJournalContracts\ElectronicJournalContracts.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по группам. Содержит три поля: id (тип integer), название (тип varchar), курс (тип integer).
/// </summary>
public partial class Group
{
/// <summary>
/// Идентификатор группы
/// </summary>
public int GroupId { get; set; }
/// <summary>
/// Название
/// </summary>
public string Title { get; set; } = null!;
/// <summary>
/// Курс
/// </summary>
public int Course { get; set; }
public virtual ICollection<Statement> Statements { get; } = new List<Statement>();
public virtual ICollection<Student> Students { get; } = new List<Student>();
}

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по результатам контроля. Содержит шесть полей: id (тип integer), форма контроля (тип varchar), дата (тип date), оценка (тип varchar), внешний ключ на студента (тип integer), внешний ключ на ведомость (тип integer).
/// </summary>
public partial class ResultOfControl
{
/// <summary>
/// Идентификатор результата контроля
/// </summary>
public int ResultOfControlId { get; set; }
/// <summary>
/// Форма контроля
/// </summary>
public string Form { get; set; } = null!;
/// <summary>
/// Дата
/// </summary>
public DateOnly Date { get; set; }
/// <summary>
/// Оценка
/// </summary>
public string Mark { get; set; } = null!;
/// <summary>
/// Внешний ключ на студента
/// </summary>
public int StudentId { get; set; }
/// <summary>
/// Внешний ключ на ведомость
/// </summary>
public int StatementId { get; set; }
public virtual Statement Statement { get; set; } = null!;
public virtual Student Student { get; set; } = null!;
}

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по ведомостям. Содержит пять полей: id (тип integer), дата (тип date), внешний ключ на дисциплину (тип integer), внешний ключ на группу (тип integer), внешний ключ на преподавателя (тип integer).
/// </summary>
public partial class Statement
{
/// <summary>
/// Идентификатор ведомости
/// </summary>
public int StatementId { get; set; }
/// <summary>
/// Дата
/// </summary>
public DateOnly Date { get; set; }
/// <summary>
/// Внешний ключ на дисциплину
/// </summary>
public int DisciplineId { get; set; }
/// <summary>
/// Внешний ключ на группу
/// </summary>
public int GroupId { get; set; }
/// <summary>
/// Внешний ключ на преподавателя
/// </summary>
public int TeacherId { get; set; }
public virtual Discipline Discipline { get; set; } = null!;
public virtual Group Group { get; set; } = null!;
public virtual ICollection<ResultOfControl> ResultOfControls { get; } = new List<ResultOfControl>();
public virtual Teacher Teacher { get; set; } = null!;
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по студентам. Содержит три поля: id (тип integer), имя (тип varchar), внешний ключ на группу (тип integer).
/// </summary>
public partial class Student
{
/// <summary>
/// Идентификатор студента
/// </summary>
public int StudentId { get; set; }
/// <summary>
/// Имя
/// </summary>
public string Name { get; set; } = null!;
/// <summary>
/// Внешний ключ на группу
/// </summary>
public int GroupId { get; set; }
public virtual Group Group { get; set; } = null!;
public virtual ICollection<ResultOfControl> ResultOfControls { get; } = new List<ResultOfControl>();
}

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
namespace ElectronicJournalDatabaseImplement;
/// <summary>
/// Данная таблица отвечает за хранение данных по преподавателям. Содержит три поля: id (тип integer), имя (тип varchar), ученое звание (тип integer).
/// </summary>
public partial class Teacher
{
/// <summary>
/// Идентификатор преподавателя
/// </summary>
public int TeacherId { get; set; }
/// <summary>
/// Имя
/// </summary>
public string Name { get; set; } = null!;
/// <summary>
/// Ученое звание
/// </summary>
public string? AcademicTitle { get; set; }
public virtual ICollection<Statement> Statements { get; } = new List<Statement>();
}

View File

@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronicJournalDataModels
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronicJournalContracts", "ElectronicJournalContracts\ElectronicJournalContracts.csproj", "{374D708E-00B2-4680-8F92-F88173620B09}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronicJournalDatabaseImplement", "ElectronicJournalDatabaseImplement\ElectronicJournalDatabaseImplement.csproj", "{E8170BDE-E00D-4BE3-B62E-C42136C1EB15}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -27,6 +29,10 @@ Global
{374D708E-00B2-4680-8F92-F88173620B09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{374D708E-00B2-4680-8F92-F88173620B09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{374D708E-00B2-4680-8F92-F88173620B09}.Release|Any CPU.Build.0 = Release|Any CPU
{E8170BDE-E00D-4BE3-B62E-C42136C1EB15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8170BDE-E00D-4BE3-B62E-C42136C1EB15}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8170BDE-E00D-4BE3-B62E-C42136C1EB15}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8170BDE-E00D-4BE3-B62E-C42136C1EB15}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -8,4 +8,15 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ElectronicJournalDatabaseImplement\ElectronicJournalDatabaseImplement.csproj" />
</ItemGroup>
</Project>