QlbrcDbContextCustomer.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Diagnostics;
  2. using Microsoft.EntityFrameworkCore;
  3. using Quadarax.Application.QLiberace.Base;
  4. using Quadarax.Application.QLiberace.Common.Attributes;
  5. using Quadarax.Application.QLiberace.Common.Configuration;
  6. using Quadarax.Application.QLiberace.Customer.Entities;
  7. using Quadarax.Application.QLiberace.Customer.Entities.DaoMapper;
  8. using Quadarax.Foundation.Core.Data.Domain;
  9. using Quadarax.Foundation.Core.Reflection;
  10. namespace Quadarax.Application.QLiberace.Customer
  11. {
  12. [DbContextModuleAssignment(Constants.Modules.Customer.Code)]
  13. public class QlbrcDbContextCustomer : DataDomain
  14. {
  15. #region *** Mapped entities ***
  16. public DbSet<Contact> Contacts { get; set; } = null!;
  17. public DbSet<Entities.Customer> Customers { get; set; } = null!;
  18. public DbSet<CustomerUser> CustomerUsers { get; set; } = null!;
  19. #endregion
  20. #region *** Constructors ***
  21. public QlbrcDbContextCustomer() : base(new DbContextOptions<QlbrcDbContext>())
  22. {
  23. }
  24. public QlbrcDbContextCustomer(DbContextOptions options) : base(options)
  25. {
  26. }
  27. #endregion
  28. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  29. {
  30. optionsBuilder.UseSqlServer(GetConnectionString()).LogTo(message => Debug.WriteLine("EFSQL>>" + message));;
  31. }
  32. protected string GetConnectionString()
  33. {
  34. var attr = AttributeQuery<DbContextModuleAssignmentAttribute>.Get(typeof(QlbrcDbContext));
  35. if (attr == null)
  36. throw new InvalidOperationException($"No connection string defined for DbContext {this.GetType().Name} or DbContextModuleAssignment is missing.");
  37. return OlbrcConfiguration.Get(attr.ModuleCode).ConnectionString;
  38. }
  39. #region *** Schema ***
  40. protected override void OnModelCreating(ModelBuilder modelBuilder)
  41. {
  42. new CustomerDm().Map(modelBuilder);
  43. new ContactDm().Map(modelBuilder);
  44. new CustomerUserDm().Map(modelBuilder);
  45. base.OnModelCreating(modelBuilder);
  46. }
  47. #endregion
  48. }
  49. }