private SchemaTablePair GetSchemaAndTableName <T>(DbContext context) where T : class { var t = typeof(T); if (!TableNames.TryGetValue(t, out var result)) { var sql = context.Model.FindEntityType(t); result = new SchemaTablePair { Schema = sql.GetSchema() ?? DefaultSchema, Table = sql.GetTableName() }; if (result != null && !string.IsNullOrWhiteSpace(result.Schema) && !string.IsNullOrWhiteSpace(result.Table)) { TableNames.TryAdd(t, result); } else { throw new MassTransitException("Couldn't determine table and schema name (using model metadata)."); } } return(result); }
SchemaTablePair GetSchemaAndTableName(DbContext context, Type type) { if (TableNames.TryGetValue(type, out var result) && _enableSchemaCaching) { return(result); } string entityName = type.Name; ObjectContext objectContext = ((IObjectContextAdapter)context).ObjectContext; ReadOnlyCollection <EntityContainerMapping> storageMetadata = objectContext.MetadataWorkspace.GetItems <EntityContainerMapping>(DataSpace.CSSpace); foreach (EntityContainerMapping mapping in storageMetadata) { if (mapping.StoreEntityContainer.TryGetEntitySetByName(entityName, true, out var entitySet)) { result = new SchemaTablePair(entitySet.Schema ?? DefaultSchema, entitySet.Table); break; } } if (result != null && _enableSchemaCaching) { TableNames.TryAdd(type, result); } return(result); }
SchemaTablePair GetSchemaAndTableName(IDbContextDependencies dependencies, Type type) { if (TableNames.TryGetValue(type, out var result) && _enableSchemaCaching) { return(result); } var entityType = dependencies.Model.FindEntityType(type); var schema = entityType.GetSchema(); var tableName = entityType.GetTableName(); if (string.IsNullOrWhiteSpace(tableName)) { throw new MassTransitException($"Unable to determine saga table name: {TypeMetadataCache.GetShortName(type)} (using model metadata)."); } result = new SchemaTablePair(schema ?? DefaultSchema, tableName); if (_enableSchemaCaching) { TableNames.TryAdd(type, result); } return(result); }
private SchemaTablePair GetSchemaAndTableName <T>(DbContext context) where T : class { var t = typeof(T); ObjectContext objectContext = ((IObjectContextAdapter)context).ObjectContext; if (!TableNames.TryGetValue(t, out var result)) { string entityName = t.Name; ReadOnlyCollection <EntityContainerMapping> storageMetadata = objectContext.MetadataWorkspace.GetItems <EntityContainerMapping>(DataSpace.CSSpace); foreach (EntityContainerMapping ecm in storageMetadata) { if (ecm.StoreEntityContainer.TryGetEntitySetByName(entityName, true, out var entitySet)) { result = new SchemaTablePair { Schema = entitySet.Schema ?? DefaultSchema, Table = entitySet.Table }; break; } } if (result != null) { TableNames.TryAdd(t, result); } else { throw new MassTransitException("Couldn't determine table and schema name (using metadata for EF Code First)."); } } return(result); }