QlbrcDbContext.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Microsoft.EntityFrameworkCore;
  2. using Quadarax.Application.QLiberace.Base.Entities;
  3. using Quadarax.Application.QLiberace.Common.Attributes;
  4. using Quadarax.Application.QLiberace.Common.Configuration;
  5. using Quadarax.Foundation.Core.Data.Domain;
  6. using Quadarax.Foundation.Core.Reflection;
  7. namespace Quadarax.Application.QLiberace.Base
  8. {
  9. [DbContextModuleAssignment(Constants.Modules.Base.Code)]
  10. public class QlbrcDbContext : DataDomain
  11. {
  12. #region *** Mapped entities ***
  13. public DbSet<User> Users { get; set; } = null!;
  14. public DbSet<Tenant> Tenants { get; set; } = null!;
  15. public DbSet<Setting> Settings { get; set; } = null!;
  16. #endregion
  17. #region *** Constructors ***
  18. public QlbrcDbContext() : base(new DbContextOptions<QlbrcDbContext>())
  19. {
  20. }
  21. public QlbrcDbContext(DbContextOptions options) : base(options)
  22. {
  23. }
  24. #endregion
  25. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  26. {
  27. optionsBuilder.UseSqlServer(GetConnectionString());
  28. }
  29. protected string GetConnectionString()
  30. {
  31. var attr = AttributeQuery<DbContextModuleAssignmentAttribute>.Get(typeof(QlbrcDbContext));
  32. if (attr == null)
  33. throw new InvalidOperationException($"No connection string defined for DbContext {this.GetType().Name} or DbContextModuleAssignment is missing.");
  34. return OlbrcConfiguration.Get(attr.ModuleCode).ConnectionString;
  35. }
  36. }
  37. }