using System.Diagnostics; using Microsoft.EntityFrameworkCore; using Quadarax.Application.QLiberace.Base; using Quadarax.Application.QLiberace.Common.Attributes; using Quadarax.Application.QLiberace.Common.Configuration; using Quadarax.Application.QLiberace.Customer.Entities; using Quadarax.Application.QLiberace.Customer.Entities.DaoMapper; using Quadarax.Foundation.Core.Data.Domain; using Quadarax.Foundation.Core.Reflection; namespace Quadarax.Application.QLiberace.Customer { [DbContextModuleAssignment(Constants.Modules.Customer.Code)] public class QlbrcDbContextCustomer : DataDomain { #region *** Mapped entities *** public DbSet Contacts { get; set; } = null!; public DbSet Customers { get; set; } = null!; public DbSet CustomerUsers { get; set; } = null!; #endregion #region *** Constructors *** public QlbrcDbContextCustomer() : base(new DbContextOptions()) { } public QlbrcDbContextCustomer(DbContextOptions options) : base(options) { } #endregion protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(GetConnectionString()).LogTo(message => Debug.WriteLine("EFSQL>>" + message));; } protected string GetConnectionString() { var attr = AttributeQuery.Get(typeof(QlbrcDbContext)); if (attr == null) throw new InvalidOperationException($"No connection string defined for DbContext {this.GetType().Name} or DbContextModuleAssignment is missing."); return OlbrcConfiguration.Get(attr.ModuleCode).ConnectionString; } #region *** Schema *** protected override void OnModelCreating(ModelBuilder modelBuilder) { new CustomerDm().Map(modelBuilder); new ContactDm().Map(modelBuilder); new CustomerUserDm().Map(modelBuilder); base.OnModelCreating(modelBuilder); } #endregion } }