92 lines
4.2 KiB
C#
92 lines
4.2 KiB
C#
using Gremlin_BlazorServer.Data.EntityClasses;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Gremlin_BlazorServer.Data.DBClasses;
|
|
|
|
public class GremlinDb : DbContext {
|
|
public DbSet<Contact>? Contacts { get; set; }
|
|
public DbSet<SalesRep>? SalesReps { get; set; }
|
|
public DbSet<Account>? Accounts { get; set; }
|
|
public DbSet<Quote>? Quotes { get; set; }
|
|
public DbSet<Product>? Products { get; set; }
|
|
public DbSet<LineItem>? LineItems { get; set; }
|
|
public DbSet<CustomDescription>? CustomDescriptions { get; set; }
|
|
public DbSet<ProductLine>? ProductLines { get; set; }
|
|
public DbSet<AccountType>? AccountTypes { get; set; }
|
|
public DbSet<SubMarket>? SubMarkets { get; set; }
|
|
public DbSet<RuSettings>? RuSettings { get; set; }
|
|
public DbSet<RegisteredUser>? RegisteredUser { get; set; }
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
|
|
// const string connectionString = "server=192.168.177.2;port=3306;database=regulus;user=root;password=lungretter1;SslMode=;SslCa=";
|
|
// const string connectionString = "server=server0;port=3306;database=regulus;user=sascha;password=mgltoJtmmDnKJ86LltsGdw";
|
|
const string connectionString = "server=woitschetzki.de;port=3308;database=regulus;user=sascha;password=mgltoJtmmDnKJ86LltsGdw;SslMode=;SslCa=";
|
|
// optionsBuilder.LogTo(Console.WriteLine);
|
|
|
|
try {
|
|
optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), options => options.EnableRetryOnFailure()).EnableSensitiveDataLogging().EnableDetailedErrors();
|
|
}
|
|
catch (Exception e) {
|
|
Console.WriteLine(e);
|
|
OnConfiguring(optionsBuilder);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
// void ConfigureAutoIncludeFor<T>(ModelBuilder modelBuilder) where T: class
|
|
// {
|
|
// var type = typeof(T);
|
|
//
|
|
// foreach (var property in type.GetProperties())
|
|
// {
|
|
// if (typeof(IMetadata).IsAssignableFrom(property.PropertyType)
|
|
// ||
|
|
// property.PropertyType.IsGenericType
|
|
// && typeof(IList<>).IsAssignableFrom(property.PropertyType.GetGenericTypeDefinition()))
|
|
// {
|
|
// modelBuilder.Entity<T>().Navigation(e => property.GetValue(e)).AutoInclude();
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
|
//wozu dient die folgende Zeile?
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
////alle Fluent-Konfigurationen aufrufen:
|
|
//TO BE TESTED!
|
|
_ = modelBuilder.ApplyConfigurationsFromAssembly(typeof(GremlinDb).Assembly);
|
|
|
|
//AutoInclude all NavigationParameters in Entities
|
|
// _ = modelBuilder.Entity<Account>().Navigation(db => db.Contacts).AutoInclude();
|
|
// _ = modelBuilder.Entity<Account>().Navigation(db => db.AccountType).AutoInclude();
|
|
// _ = modelBuilder.Entity<Account>().Navigation(db => db.SubMarket).AutoInclude();
|
|
// _ = modelBuilder.Entity<Account>().Navigation(db => db.CustomDescriptions).AutoInclude();
|
|
|
|
//modelBuilder.Entity<Contact>().Navigation(db => db.Account).AutoInclude();
|
|
|
|
//modelBuilder.Entity<Contact>().Navigation(db => db.Quotes).AutoInclude();
|
|
|
|
//Takes too much time
|
|
//modelBuilder.Entity<ProductLine>().Navigation(db => db.Products).AutoInclude();
|
|
//modelBuilder.Entity<Quote>().Navigation(db => db.LineItems).AutoInclude();
|
|
//modelBuilder.Entity<Quote>().Navigation(db => db.Recipient).AutoInclude();
|
|
|
|
// _ = modelBuilder.Entity<Product>().Navigation(db => db.CustomDescription).AutoInclude();
|
|
// _ = modelBuilder.Entity<Product>().Navigation(db => db.ProductLine).AutoInclude();
|
|
|
|
//Generic AutoInclude method not yet working
|
|
//ConfigureAutoIncludeFor<Account>(modelBuilder);
|
|
|
|
////Fluent-Konfiguration einzeln für eine Entity aufrufen:
|
|
//new AccountConfiguration().Configure(modelBuilder.Entity<Account>());
|
|
//new ContactConfiguration().Configure(modelBuilder.Entity<Contact>());
|
|
//new QuoteConfiguration().Configure(modelBuilder.Entity<Quote>());
|
|
//new ProductConfiguration().Configure(modelBuilder.Entity<Product>());
|
|
//new LineItemConfiguration().Configure(modelBuilder.Entity<LineItem>());
|
|
//new CustomDescriptionConfiguration().Configure(modelBuilder.Entity<CustomDescription>());
|
|
//new ProductLineConfiguration().Configure(modelBuilder.Entity<ProductLine>());
|
|
//new AccountTypeConfiguration().Configure(modelBuilder.Entity<AccountType>());
|
|
//new SubMarketConfiguration().Configure(modelBuilder.Entity<SubMarket>());
|
|
}
|
|
} |