Files
FA_WEB/OrdersManagementDataModel/OrdersManagementDbContext.cs

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");
});
}
}