protected virtual IModel CreateModel([NotNull] DbContextUI <TDbContext> dbContextUI, TDbContext dbContext) { var modelBuilder = new ModelBuilder <TDbContext>(); modelBuilder.ApplyDbContext(dbContext); _modelCustomizer.Customize(modelBuilder, dbContextUI); return(modelBuilder.FinalizeModel()); }
public IModel GetModel(DbContextUI <TDbContext> dbContextUI, TDbContext dbContext) { var cacheKey = dbContextUI.GetType().ToString(); if (!_cache.TryGetValue(cacheKey, out IModel model)) { // Make sure OnModelCreating really only gets called once, since it may not be thread safe. lock (_syncObject) { if (!_cache.TryGetValue(cacheKey, out model)) { model = CreateModel(dbContextUI, dbContext); model = _cache.Set(cacheKey, model, new MemoryCacheEntryOptions { Size = 100, Priority = CacheItemPriority.High }); } } } return(model); }
public virtual void Customize(ModelBuilder <TDbContext> modelBuilder, DbContextUI <TDbContext> context) { context.OnModelCreating(modelBuilder); }