示例#1
0
        private void Prepare()
        {
            // todo: bad design - make service
            var model = ModelsCachedContainer.GetRawModel(_dbContextType, _logger);

            UsedDbContextModel = model != null;
            Log(nameof(Prepare),
                UsedDbContextModel
                    ? "Use dbContext model"
                    : "Don't use dbContext model");
            var tableNames = GetTableNamesFromModel(model, _logger);

            DefaultSchema = DefaultSchemaUpdater.GetDefaultSchema(_dbContextType, model, _logger);
            foreach (var property in _dbContextType.GetProperties())
            {
                var propertyType = property.PropertyType;
                if (!propertyType.GetTypeInfo().IsGenericType)
                {
                    continue;
                }
                if (propertyType.GetGenericTypeDefinition() != typeof(DbSet <>))
                {
                    continue;
                }
                var entityType = propertyType.GetGenericArguments()[0];
                var entity     = CreateDbSetWrapper(entityType, property.Name, tableNames);
                var key        = new FullTableName(entity.TableName, entity.Schema);
                _dbSets[key] = entity;
            }
        }
示例#2
0
        private void Prepare()
        {
            // todo: bad design - make service
            var model = ModelsCachedContainer.GetRawModel(_dbContextType, _logger);

            UsedDbContextModel = model != null;
            Log(nameof(Prepare),
                UsedDbContextModel
                    ? "Use dbContext model"
                    : "Don't use dbContext model");
            DefaultSchema = DefaultSchemaUpdater.GetDefaultSchema(_dbContextType, model, _logger);
            var rawTableNames = GetTableNamesFromModel(model, _logger);

            DefaultIsUnicodeText = DefaultSchemaUpdater.GetDefaultIsUnicodeText(_dbContextType, _logger);
            foreach (var i in UsedShamanOptions.Services.OfType <IModelPrepareService>())
            {
                i.UpdateModel(this, _dbContextType, _logger);
            }

/*
 *          foreach (var property in _dbContextType.GetProperties())
 *          {
 *              var propertyType = property.PropertyType;
 *              if (!propertyType.GetTypeInfo().IsGenericType) continue;
 *              if (propertyType.GetGenericTypeDefinition() != typeof(DbSet<>)) continue;
 *              var entityType = propertyType.GetGenericArguments()[0];
 *
 *              var fullTableName = GetTableName(entityType, property.Name, rawTableNames, DefaultSchema);
 *              var entity     = CreateDbSetWrapper(entityType, fullTableName);
 *              var key = new FullTableName(entity.TableName, entity.Schema);
 *              key = key.WithDefaultSchema(DefaultSchema);
 *              _dbSets[key] = entity;
 *              _dbSetsWithoutModifications[fullTableName] = entity;
 *          }
 */
            foreach (var aa in GetEntityTypes(_dbContextType))
            {
                var fullTableName = GetTableName(aa.EntityType, aa.Property.Name, rawTableNames, DefaultSchema);
                var entity        = CreateDbSetWrapper(aa.EntityType, fullTableName);
                var key           = new FullTableName(entity.TableName, entity.Schema);
                key          = key.WithDefaultSchema(DefaultSchema);
                _dbSets[key] = entity;
            }
        }