Exemple #1
0
        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());
        }
Exemple #2
0
        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);
 }