151 lines
6.3 KiB
C#
151 lines
6.3 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using OrdersManagementDataModel.Entities;
|
|
using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler;
|
|
|
|
namespace OrdersManagementDataModel;
|
|
|
|
public class OrdersManagementDbContext : DbContext
|
|
{
|
|
public OrdersManagementDbContext(DbContextOptions<OrdersManagementDbContext> options)
|
|
: base(options)
|
|
{
|
|
}
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
var configuration = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile("appsettings.json")
|
|
.Build();
|
|
|
|
var connectionString = configuration.GetConnectionString("OrdersManagementConnection");
|
|
optionsBuilder.UseSqlServer(connectionString, options => options.CommandTimeout(300));
|
|
}
|
|
|
|
public DbSet<TaskScheduler> TaskSchedulers { get; set; }
|
|
public DbSet<TaskSchedulerDetail> TaskSchedulerDetails { get; set; }
|
|
public DbSet<User> Users { get; set; }
|
|
public DbSet<Role> Roles { get; set; }
|
|
public DbSet<Function> Functions { get; set; }
|
|
public DbSet<UserRole> UserRoles { get; set; }
|
|
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<TaskScheduler>(entity =>
|
|
{
|
|
entity.HasKey(e => e.Id);
|
|
entity.ToTable("TaskScheduler");
|
|
entity.Property(e => e.RowPointer).HasDefaultValueSql("newid()");
|
|
entity.Property(e => e.CreateDate).HasDefaultValueSql("getdate()");
|
|
entity.Property(e => e.ActiveFrom).HasDefaultValueSql("getdate()");
|
|
entity.Property(e => e.ActiveUntil).IsRequired(false);
|
|
});
|
|
|
|
modelBuilder.Entity<TaskSchedulerDetail>(entity =>
|
|
{
|
|
entity.ToTable("TaskSchedulerDetails");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
|
|
entity.Property(e => e.Id).ValueGeneratedOnAdd();
|
|
|
|
entity.Property(e => e.RowPointer)
|
|
.HasColumnName("RowPointer")
|
|
.HasColumnType("uniqueidentifier")
|
|
.HasDefaultValueSql("newid()");
|
|
|
|
entity.Property(e => e.FkTaskScheduler)
|
|
.HasColumnName("FkTaskScheduler");
|
|
|
|
entity.Property(e => e.JobRunDate)
|
|
.HasColumnName("JobRunDate")
|
|
.HasDefaultValueSql("getdate()");
|
|
|
|
entity.Property(e => e.Log)
|
|
.HasColumnName("Log")
|
|
.HasColumnType("text");
|
|
|
|
entity.HasOne(d => d.TaskScheduler)
|
|
.WithMany(p => p.TaskSchedulerDetails)
|
|
.HasForeignKey(d => d.FkTaskScheduler)
|
|
.HasConstraintName("FK_TaskSchedulerDetails_TaskScheduler");
|
|
});
|
|
|
|
modelBuilder.Entity<User>(entity =>
|
|
{
|
|
entity.ToTable("User");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("Id");
|
|
entity.Property(e => e.Login).HasColumnName("Login").HasMaxLength(50).IsRequired();
|
|
entity.Property(e => e.PasswordHash).HasColumnName("PasswordHash").HasMaxLength(256).IsRequired();
|
|
entity.Property(e => e.IsTemporaryPassword).HasColumnName("IsTemporaryPassword").IsRequired();
|
|
entity.Property(e => e.IsActive).HasColumnName("IsActive").IsRequired();
|
|
entity.Property(e => e.ActiveFrom).HasColumnName("ActiveFrom");
|
|
entity.Property(e => e.ActiveTo).HasColumnName("ActiveTo");
|
|
entity.Property(e => e.Email).HasColumnName("Email").HasMaxLength(100);
|
|
entity.Property(e => e.FirstName).HasColumnName("FirstName").HasMaxLength(50);
|
|
entity.Property(e => e.LastName).HasColumnName("LastName").HasMaxLength(50);
|
|
entity.Property(e => e.CreatedDate).HasColumnName("CreatedDate").IsRequired();
|
|
entity.Property(e => e.LastLoginDate).HasColumnName("LastLoginDate");
|
|
entity.Property(e => e.FailedLoginAttempts).HasColumnName("FailedLoginAttempts").IsRequired();
|
|
entity.Property(e => e.IsLocked).HasColumnName("IsLocked").IsRequired();
|
|
entity.Property(e => e.LockoutEndDate).HasColumnName("LockoutEndDate");
|
|
entity.Property(e => e.RowPointer).HasColumnName("RowPointer").IsRequired();
|
|
});
|
|
|
|
// Konfiguracja dla Role (już zdefiniowana wcześniej)
|
|
modelBuilder.Entity<Role>(entity =>
|
|
{
|
|
entity.ToTable("Role");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("Id");
|
|
entity.Property(e => e.Name).HasColumnName("Name").HasMaxLength(50).IsRequired();
|
|
entity.Property(e => e.RowPointer).HasColumnName("RowPointer").IsRequired();
|
|
});
|
|
|
|
// Konfiguracja dla Function (już zdefiniowana wcześniej)
|
|
modelBuilder.Entity<Function>(entity =>
|
|
{
|
|
entity.ToTable("Function");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("Id");
|
|
entity.Property(e => e.RoleId).HasColumnName("RoleId").IsRequired();
|
|
entity.Property(e => e.Name).HasColumnName("Name").HasMaxLength(100).IsRequired();
|
|
entity.Property(e => e.RowPointer).HasColumnName("RowPointer").IsRequired();
|
|
|
|
entity.HasOne(e => e.Role)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.RoleId)
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.HasConstraintName("FK_Function_Role");
|
|
});
|
|
|
|
// Konfiguracja dla UserRole
|
|
modelBuilder.Entity<UserRole>(entity =>
|
|
{
|
|
entity.ToTable("UserRole");
|
|
|
|
entity.HasKey(e => new { e.UserId, e.RoleId });
|
|
entity.Property(e => e.UserId).HasColumnName("UserId").IsRequired();
|
|
entity.Property(e => e.RoleId).HasColumnName("RoleId").IsRequired();
|
|
entity.Property(e => e.RowPointer).HasColumnName("RowPointer").IsRequired();
|
|
|
|
entity.HasOne(e => e.User)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.UserId)
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.HasConstraintName("FK_UserRole_User");
|
|
|
|
entity.HasOne(e => e.Role)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.RoleId)
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.HasConstraintName("FK_UserRole_Role");
|
|
});
|
|
}
|
|
} |