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; } }
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; } }