добавление моделек для бд (кроме многие ко многим), реализация одного контракта хранилища
88 lines
2.5 KiB
C#
88 lines
2.5 KiB
C#
using BankContracts.Infrastructure;
|
|
using BankDatabase.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace BankDatabase;
|
|
|
|
internal class BankDbContext(IConfigurationDatabase configurationDatabase) : DbContext
|
|
{
|
|
private readonly IConfigurationDatabase? _configurationDatabase = configurationDatabase;
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
optionsBuilder.UseNpgsql(_configurationDatabase?.ConnectionString, o => o.SetPostgresVersion(14, 2));
|
|
base.OnConfiguring(optionsBuilder);
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasIndex(x => x.Login)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasIndex(x => x.Email)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasIndex(x => x.PhoneNumber)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<CreditProgram>()
|
|
.HasIndex(x => x.Name)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Currency>()
|
|
.HasIndex(x => x.Abbreviation)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Storekeeper>()
|
|
.HasIndex(x => x.PhoneNumber)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Storekeeper>()
|
|
.HasIndex(x => x.Email)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Storekeeper>()
|
|
.HasIndex(x => x.Login)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasMany(x => x.Deposits)
|
|
.WithOne(x => x.Clerk)
|
|
.HasForeignKey(x => x.ClerkId)
|
|
.OnDelete(DeleteBehavior.Restrict);
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasMany(x => x.Clients)
|
|
.WithOne(x => x.Clerk)
|
|
.HasForeignKey(x => x.ClerkId)
|
|
.OnDelete(DeleteBehavior.Restrict);
|
|
|
|
modelBuilder.Entity<Clerk>()
|
|
.HasMany(x => x.Replenishments)
|
|
.WithOne(x => x.Clerk)
|
|
.HasForeignKey(x => x.ClerkId)
|
|
.OnDelete(DeleteBehavior.Restrict);
|
|
}
|
|
|
|
public DbSet<Clerk> Clerks { get; set; }
|
|
|
|
public DbSet<Client> Clients { get; set; }
|
|
|
|
public DbSet<CreditProgram> CreditPrograms { get; set; }
|
|
|
|
public DbSet<Currency> Currencies { get; set; }
|
|
|
|
public DbSet<Deposit> Deposits { get; set; }
|
|
|
|
public DbSet<Period> Periods { get; set; }
|
|
|
|
public DbSet<Replenishment> Replenishments { get; set; }
|
|
|
|
public DbSet<Storekeeper> Storekeepers { get; set; }
|
|
}
|