700 lines
25 KiB
C#
700 lines
25 KiB
C#
using Aperio_Control_Centre.ACSDatabase.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Aperio_Control_Centre.ACSDatabase
|
|
{
|
|
public partial class ACSDatabaseContext(DbContextOptions<ACSDatabaseContext> options) : DbContext(options)
|
|
{
|
|
public DbSet<Models.Department> Departments { get; set; } = null!;
|
|
|
|
public DbSet<Models.Device> Devices { get; set; } = null!;
|
|
public DbSet<Models.DeviceGroup> DeviceGroups { get; set; } = null!;
|
|
|
|
//old group
|
|
[Obsolete("Old user groups")]
|
|
public DbSet<Models.DeviceGroupJoin> DeviceGroupJoins { get; set; } = null!;
|
|
//new group
|
|
public DbSet<Models.DeviceGroupJoin2> DeviceGroupJoins2 { get; set; } = null!;
|
|
|
|
public DbSet<Models.GlobalSetting> GlobalSettings { get; set; } = null!;
|
|
|
|
[Obsolete("Old user groups")]
|
|
public DbSet<Models.Group> Groups { get; set; } = null!;
|
|
|
|
public DbSet<Models.Location> Locations { get; set; } = null!;
|
|
public DbSet<Models.Logging> Loggings { get; set; } = null!;
|
|
public DbSet<Models.Timezone> Timezones { get; set; } = null!;
|
|
|
|
public DbSet<Models.User> Users { get; set; } = null!;
|
|
public DbSet<Models.UserGroup> UserGroups { get; set; } = null!;
|
|
public DbSet<Models.UserGroupJoin> UserGroupJoins { get; set; } = null!;
|
|
|
|
public DbSet<Models.AuthorizationEntry> AuthorizationMatrix { get; set; } = null!;
|
|
|
|
public DbSet<Models.DoorModeSchedule> DoorModeSchedules { get; set; } = null!;
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
//Debug.WriteLine($"OnConfiguring IsConfigured={optionsBuilder.IsConfigured}");
|
|
|
|
if (!optionsBuilder.IsConfigured)
|
|
{
|
|
//optionsBuilder.UseSqlServer(_configuration.GetConnectionString("ACSDatabaseConnection"));
|
|
}
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
//Debug.WriteLine("OnModelCreating");
|
|
|
|
|
|
modelBuilder.Entity<Models.Department>(entity =>
|
|
{
|
|
entity.ToTable("Departments");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired(true);
|
|
});
|
|
|
|
modelBuilder.Entity<Models.Device>(entity =>
|
|
{
|
|
entity.ToTable("Devices");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.DeviceId)
|
|
.HasColumnName("DeviceID")
|
|
.HasMaxLength(10)
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.HubId)
|
|
.HasColumnName("HubID")
|
|
.HasMaxLength(10);
|
|
|
|
entity.Property(e => e.Ipaddress)
|
|
.HasColumnName("Ipaddress")
|
|
.HasMaxLength(50);
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasColumnName("Name")
|
|
.HasMaxLength(50)
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasColumnName("Info")
|
|
.HasMaxLength(500);
|
|
|
|
entity.OwnsMany<SupportedDoorMode>(e => e.DoorModes, b =>
|
|
{
|
|
b.ToJson();
|
|
});
|
|
|
|
//entity.OwnsMany<DoorModeSchedulerItem>(e => e.DoorModeScheduler, b => { b.ToJson().Ignore(x => x.TimeZone); });
|
|
//entity.OwnsMany<DoorModeSchedulerItem>(e => e.DoorModeScheduler, b =>
|
|
//{
|
|
// b.ToJson();
|
|
// //b.Ignore(x => x.TimeZone);
|
|
// //b.OwnsOne(t => t.Timezone);
|
|
//});
|
|
|
|
entity.Property(e => e.ProductClass)
|
|
.HasColumnName("ProductClass");
|
|
|
|
entity.Property(e => e.DoorState)
|
|
.HasColumnName("DoorState");
|
|
|
|
entity.Property(e => e.LockState)
|
|
.HasColumnName("LockState");
|
|
|
|
entity.Property(e => e.HandleState)
|
|
.HasColumnName("HandleState");
|
|
|
|
entity.Property(e => e.KeyCylinderState)
|
|
.HasColumnName("KeyCylinderState");
|
|
|
|
entity.Property(e => e.TamperState)
|
|
.HasColumnName("TamperState");
|
|
|
|
entity.Property(e => e.BatteryState)
|
|
.HasColumnName("BatteryState");
|
|
|
|
entity.Property(e => e.EmergencyInsideState)
|
|
.HasColumnName("EmergencyInsideState");
|
|
|
|
entity.Property(e => e.EmergencyOutsideState)
|
|
.HasColumnName("EmergencyOutsideState");
|
|
|
|
entity.Property(e => e.ConnectionState)
|
|
.HasColumnName("ConnectionState");
|
|
|
|
entity.Property(e => e.UnlockTime)
|
|
.HasColumnName("UnlockTime");
|
|
|
|
entity.Property(e => e.UnlockTimezoneId)
|
|
.HasColumnName("UnlockTimezone_Id");
|
|
|
|
entity.Property(e => e.LocationId)
|
|
.HasColumnName("Location_Id");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.LastData)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastData");
|
|
|
|
|
|
entity.HasMany(e => e.DeviceGroups)
|
|
.WithMany(e => e.Devices)
|
|
.UsingEntity<DeviceGroupJoin2>(
|
|
l => l.HasOne<DeviceGroup>().WithMany().HasForeignKey(e => e.DeviceGroupId),
|
|
j => j.HasOne<Device>().WithMany().HasForeignKey(e => e.DeviceId)
|
|
);
|
|
|
|
|
|
entity.HasIndex(e => e.LocationId, "IX_FK_Devices_Locations");
|
|
|
|
entity.HasIndex(e => e.UnlockTimezoneId, "IX_FK_Devices_Timezones");
|
|
|
|
entity.HasIndex(e => e.DeviceId, "NonClusteredIndex-Device_Id");
|
|
|
|
|
|
entity.HasOne(d => d.Location)
|
|
.WithMany(p => p.Devices)
|
|
.HasForeignKey(d => d.LocationId)
|
|
.HasConstraintName("FK_Devices_Locations");
|
|
|
|
entity.HasOne(d => d.UnlockTimezone)
|
|
.WithMany(p => p.Devices)
|
|
.HasForeignKey(d => d.UnlockTimezoneId)
|
|
.HasConstraintName("FK_Devices_Timezones");
|
|
});
|
|
|
|
modelBuilder.Entity<Models.DeviceGroup>(entity =>
|
|
{
|
|
entity.ToTable("DeviceGroups");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired();
|
|
|
|
|
|
entity.HasMany(e => e.Devices)
|
|
.WithMany(e => e.DeviceGroups)
|
|
.UsingEntity<DeviceGroupJoin2>(
|
|
l => l.HasOne<Device>().WithMany().HasForeignKey(e => e.DeviceId),
|
|
j => j.HasOne<DeviceGroup>().WithMany().HasForeignKey(e => e.DeviceGroupId)
|
|
);
|
|
|
|
entity.HasMany(e => e.Authorizations)
|
|
.WithOne(e => e.DeviceGroup)
|
|
.HasForeignKey(e => e.DeviceGroupId)
|
|
.HasPrincipalKey(e => e.Id)
|
|
.IsRequired();
|
|
});
|
|
|
|
//new group
|
|
modelBuilder.Entity<Models.DeviceGroupJoin2>(entity =>
|
|
{
|
|
entity.ToTable("DeviceGroupJoins2");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.DeviceGroupId).HasColumnName("DeviceGroup_Id");
|
|
|
|
entity.Property(e => e.DeviceId).HasColumnName("Device_Id");
|
|
});
|
|
|
|
//old group
|
|
modelBuilder.Entity<Models.DeviceGroupJoin>(entity =>
|
|
{
|
|
entity.HasIndex(e => e.DeviceId, "IX_FK_DeviceGroupJoins_Device");
|
|
|
|
entity.HasIndex(e => e.GroupId, "IX_FK_DeviceGroupJoins_Group");
|
|
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.DeviceId).HasColumnName("Device_Id");
|
|
|
|
entity.Property(e => e.GroupId).HasColumnName("Group_Id");
|
|
|
|
entity.HasOne(d => d.Device)
|
|
.WithMany(p => p.DeviceGroupJoins)
|
|
.HasForeignKey(d => d.DeviceId)
|
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
|
.HasConstraintName("FK_DeviceGroupJoins_Device");
|
|
|
|
entity.HasOne(d => d.Group)
|
|
.WithMany(p => p.DeviceGroupJoins)
|
|
.HasForeignKey(d => d.GroupId)
|
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
|
.HasConstraintName("FK_DeviceGroupJoins_Group");
|
|
});
|
|
|
|
modelBuilder.Entity<Models.GlobalSetting>(entity =>
|
|
{
|
|
entity.ToTable("GlobalSettings");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name");
|
|
|
|
entity.Property(e => e.Value)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Value");
|
|
|
|
});
|
|
|
|
modelBuilder.Entity<Models.Group>(entity =>
|
|
{
|
|
entity.ToTable("Groups");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.TimezoneId)
|
|
.HasColumnName("Timezone_Id")
|
|
.IsRequired();
|
|
|
|
entity.HasOne(d => d.Timezone)
|
|
.WithMany(p => p.Groups)
|
|
//.HasForeignKey("Timezone_Id")
|
|
.HasForeignKey(d => d.TimezoneId)
|
|
//.IsRequired()
|
|
//.OnDelete(DeleteBehavior.ClientSetNull)
|
|
.HasConstraintName("FK_Timezones_Groups");
|
|
|
|
|
|
|
|
//entity.HasOne(d => d.Timezone)
|
|
// .WithMany(p => p.Groups)
|
|
// .HasForeignKey(d => d.TimezoneId)
|
|
// .OnDelete(DeleteBehavior.ClientSetNull)
|
|
// .HasConstraintName("FK_Timezones_Groups");
|
|
});
|
|
|
|
modelBuilder.Entity<Models.Location>(entity =>
|
|
{
|
|
entity.ToTable("Locations");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Street)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Street");
|
|
|
|
entity.Property(e => e.Nr)
|
|
.HasMaxLength(10)
|
|
.HasColumnName("Nr");
|
|
|
|
entity.Property(e => e.City)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("City");
|
|
|
|
entity.Property(e => e.Zipcode)
|
|
.HasMaxLength(10)
|
|
.HasColumnName("Zipcode");
|
|
|
|
entity.Property(e => e.Province)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Province");
|
|
|
|
entity.Property(e => e.Country)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Country");
|
|
|
|
entity.Property(e => e.City)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("City");
|
|
|
|
entity.Property(e => e.Latitude)
|
|
.HasMaxLength(12)
|
|
.HasColumnName("Latitude");
|
|
|
|
entity.Property(e => e.Longitude)
|
|
.HasMaxLength(12)
|
|
.HasColumnName("Longitude");
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired(true);
|
|
});
|
|
|
|
modelBuilder.Entity<Models.Logging>(entity =>
|
|
{
|
|
entity.ToTable("Loggings");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Time)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("Time")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.UserName)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("UserName");
|
|
|
|
entity.Property(e => e.Message)
|
|
.HasMaxLength(200)
|
|
.HasColumnName("Message");
|
|
|
|
entity.Property(e => e.CredentialString)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("CredentialString");
|
|
|
|
entity.Property(e => e.CredentialType)
|
|
.HasColumnName("CredentialType");
|
|
|
|
entity.Property(e => e.Access)
|
|
.HasColumnName("Access");
|
|
|
|
entity.Property(e => e.LogType)
|
|
.HasColumnName("LogType");
|
|
entity.HasIndex(e => e.LogType, "NonClusteredIndex-LogType");
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.DeviceId).HasColumnName("Device_Id");
|
|
entity.HasIndex(e => e.DeviceId, "IX_FK_DevicesLoggingsX");
|
|
entity.HasIndex(e => e.DeviceId, "NonClusteredIndex-Device_Id");
|
|
|
|
entity.HasOne(d => d.Device)
|
|
.WithMany(p => p.Loggings)
|
|
.HasForeignKey(d => d.DeviceId)
|
|
.HasConstraintName("FK_DevicesLoggingsX");
|
|
|
|
entity.Property(e => e.UserId).HasColumnName("User_Id");
|
|
entity.HasIndex(e => e.UserId, "IX_FK_UsersLoggingsX");
|
|
entity.HasIndex(e => e.UserId, "NonClusteredIndex-User_Id");
|
|
|
|
entity.HasOne(d => d.User)
|
|
.WithMany(p => p.Loggings)
|
|
.HasForeignKey(d => d.UserId)
|
|
.HasConstraintName("FK_UsersLoggingsX");
|
|
});
|
|
|
|
modelBuilder.Entity<Models.Timezone>(entity =>
|
|
{
|
|
entity.ToTable("Timezones");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.BeginTime)
|
|
//.HasColumnType("timespan")
|
|
.HasColumnName("BeginTime");
|
|
|
|
entity.Property(e => e.EndTime)
|
|
//.HasColumnType("timespan")
|
|
.HasColumnName("EndTime");
|
|
|
|
entity.Property(e => e.WeekDays)
|
|
.HasColumnName("WeekDays");
|
|
|
|
entity.Property(e => e.TwentyFourHours)
|
|
.HasColumnName("TwentyFourHours");
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info")
|
|
.IsRequired(false);
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired(true);
|
|
|
|
entity.Ignore(e => e.Monday);
|
|
entity.Ignore(e => e.Tuesday);
|
|
entity.Ignore(e => e.Wednesday);
|
|
entity.Ignore(e => e.Thursday);
|
|
entity.Ignore(e => e.Friday);
|
|
entity.Ignore(e => e.Saturday);
|
|
entity.Ignore(e => e.Sunday);
|
|
entity.Ignore(e => e.AllDays);
|
|
entity.Ignore(e => e.WholeDayTime);
|
|
entity.Ignore(e => e.GetTimezoneString);
|
|
entity.Ignore(e => e.GetWeekdayShortString);
|
|
//entity.Ignore(e => e.IsTimezoneActive2);
|
|
|
|
entity.HasMany(e => e.Authorizations)
|
|
.WithOne(e => e.Timezone)
|
|
.HasForeignKey(e => e.TimezoneId)
|
|
.HasPrincipalKey(e => e.Id)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity<Models.User>(entity =>
|
|
{
|
|
entity.ToTable("Users");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.CredentialString)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("CredentialString")
|
|
.IsRequired(true);
|
|
entity.HasIndex(e => e.CredentialString, "NonClusteredIndex-CredentialString");
|
|
|
|
entity.Property(e => e.CredentialType)
|
|
.HasColumnName("CredentialType")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.PassNumber)
|
|
.HasColumnName("PassNumber");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.SubLine)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("SubLine");
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info")
|
|
.IsRequired(false);
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.Created)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("Created")
|
|
.IsRequired(true);
|
|
|
|
entity.Property(e => e.Dordrecht)
|
|
.HasColumnName("Dordrecht");
|
|
|
|
entity.HasMany(e => e.UserGroups)
|
|
.WithMany(e => e.Users)
|
|
.UsingEntity<UserGroupJoin>(
|
|
l => l.HasOne<UserGroup>().WithMany().HasForeignKey(e => e.UserGroupId),
|
|
j => j.HasOne<User>().WithMany().HasForeignKey(e => e.UserId)
|
|
);
|
|
|
|
entity.Property(e => e.Watched)
|
|
.HasColumnName("Watched")
|
|
.IsRequired(false);
|
|
|
|
entity.Property(e => e.Expires)
|
|
.HasColumnName("Expires")
|
|
.IsRequired(false);
|
|
|
|
entity.HasIndex(e => e.DepartmentId, "IX_FK_Users_Departments");
|
|
|
|
entity.HasIndex(e => e.GroupId, "IX_FK_Users_Groups");
|
|
|
|
entity.Property(e => e.DepartmentId).HasColumnName("Department_Id");
|
|
|
|
entity.Property(e => e.GroupId).HasColumnName("Group_Id");
|
|
|
|
entity.Property(e => e.Info).HasMaxLength(500);
|
|
|
|
entity.HasOne(d => d.Department)
|
|
.WithMany(p => p.Users)
|
|
.HasForeignKey(d => d.DepartmentId)
|
|
.HasConstraintName("FK_Users_Departments");
|
|
|
|
entity.HasOne(d => d.Group)
|
|
.WithMany(p => p.Users)
|
|
.HasForeignKey(d => d.GroupId)
|
|
.HasConstraintName("FK_Users_Groups");
|
|
});
|
|
|
|
modelBuilder.Entity<Models.UserGroup>(entity =>
|
|
{
|
|
entity.ToTable("UserGroups");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.Name)
|
|
.HasMaxLength(50)
|
|
.HasColumnName("Name")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.Info)
|
|
.HasMaxLength(500)
|
|
.HasColumnName("Info");
|
|
|
|
entity.Property(e => e.Active)
|
|
.HasColumnName("Active")
|
|
.IsRequired();
|
|
|
|
entity.Property(e => e.LastChanged)
|
|
.HasColumnType("datetime")
|
|
.HasColumnName("LastChanged")
|
|
.IsRequired();
|
|
|
|
|
|
entity.HasMany(e => e.Users)
|
|
.WithMany(e => e.UserGroups)
|
|
.UsingEntity<UserGroupJoin>(
|
|
l => l.HasOne<User>().WithMany().HasForeignKey(e => e.UserId),
|
|
j => j.HasOne<UserGroup>().WithMany().HasForeignKey(e => e.UserGroupId)
|
|
);
|
|
|
|
entity.HasMany(e => e.Authorizations)
|
|
.WithOne(e => e.UserGroup)
|
|
.HasForeignKey(e => e.UserGroupId)
|
|
.HasPrincipalKey(e => e.Id)
|
|
.IsRequired();
|
|
});
|
|
|
|
|
|
modelBuilder.Entity<Models.UserGroupJoin>(entity =>
|
|
{
|
|
entity.ToTable("UserGroupJoins");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.UserGroupId).HasColumnName("UserGroup_Id");
|
|
|
|
entity.Property(e => e.UserId).HasColumnName("User_Id");
|
|
});
|
|
|
|
|
|
modelBuilder.Entity<Models.AuthorizationEntry>(entity =>
|
|
{
|
|
entity.ToTable("AuthorizationMatrix");
|
|
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
|
|
entity.Property(e => e.UserGroupId).HasColumnName("UserGroup_Id");
|
|
|
|
entity.Property(e => e.DeviceGroupId).HasColumnName("DeviceGroup_Id");
|
|
|
|
entity.Property(e => e.TimezoneId).HasColumnName("Timezone_Id");
|
|
|
|
//entity.Navigation(e => e.UserGroup).HasField("UserGroup_Id");
|
|
|
|
//entity.HasMany(e => e.UserGroup)
|
|
|
|
|
|
//entity.HasOne(e => e.UserGroup)
|
|
// .WithMany(e => e.Authorizations)
|
|
// .HasForeignKey(e => e.UserGroupId)
|
|
// .HasPrincipalKey(e => e.Id)
|
|
// .IsRequired();
|
|
|
|
});
|
|
|
|
modelBuilder.Entity<DoorModeSchedule>(entity =>
|
|
{
|
|
entity.ToTable("DoorModeSchedules");
|
|
entity.HasKey(e => e.Id);
|
|
entity.Property(e => e.Id).HasColumnName("ID");
|
|
entity.Property(e => e.DeviceId).HasColumnName("Device_Id").IsRequired(true);
|
|
entity.Property(e => e.DoorMode).HasColumnName("DoorMode").IsRequired(true);
|
|
entity.Property(e => e.TimezoneId).HasColumnName("Timezone_Id").IsRequired(true);
|
|
|
|
entity.HasOne(d => d.Device)
|
|
.WithMany(p => p.DoorModeSchedules)
|
|
.HasForeignKey(d => d.DeviceId);
|
|
|
|
entity.HasOne(d => d.Timezone)
|
|
.WithMany(p => p.DoorModeSchedules)
|
|
.HasForeignKey(d => d.TimezoneId);
|
|
});
|
|
}
|
|
}
|
|
}
|