SchemaTableColumnTrio GetSchemaAndTableNameAndColumnName(IDbContextDependencies dependencies, Type type) { if (TableNames.TryGetValue(type, out var result) && _enableSchemaCaching) { return(result); } #pragma warning disable EF1001 var entityType = dependencies.Model.FindEntityType(type); var schema = entityType.GetSchema(); var tableName = entityType.GetTableName(); var property = entityType.GetProperties().Single(x => x.Name.Equals(nameof(ISaga.CorrelationId), StringComparison.OrdinalIgnoreCase)); var columnName = property.GetColumnName(); if (string.IsNullOrWhiteSpace(tableName)) { throw new MassTransitException($"Unable to determine saga table name: {TypeMetadataCache.GetShortName(type)} (using model metadata)."); } result = new SchemaTableColumnTrio(schema ?? DefaultSchema, tableName, columnName); if (_enableSchemaCaching) { TableNames.TryAdd(type, result); } return(result); }
string FormatLockStatement <TSaga>(IDbContextDependencies context) where TSaga : class, ISaga { var schemaTableTrio = GetSchemaAndTableNameAndColumnName(context, typeof(TSaga)); return(string.Format(RowLockStatement, schemaTableTrio.Schema, schemaTableTrio.Table, schemaTableTrio.ColumnName)); }
SchemaTableColumnTrio GetSchemaAndTableNameAndColumnName(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(); var columnName = entityType.GetProperty(nameof(ISaga.CorrelationId)).GetColumnName(); if (string.IsNullOrWhiteSpace(tableName)) { throw new MassTransitException($"Unable to determine saga table name: {TypeMetadataCache.GetShortName(type)} (using model metadata)."); } result = new SchemaTableColumnTrio(schema ?? DefaultSchema, tableName, columnName); if (_enableSchemaCaching) { TableNames.TryAdd(type, result); } return(result); }
private static IEnumerable <IProperty> GetKeyProperties(this IDbContextDependencies context, Type entityType) { var keyProperties = KeyPropertiesByEntityType.GetOrAdd( entityType, t => context.FindPrimaryKeyProperties(entityType).ToArray()); return(keyProperties); }
public static IDbContextDependencies GetDependencies([NotNull] this IDbContextDependencies context) => context;
public static IDbContextDependencies GetDependencies(this IDbContextDependencies context) => context;
private static IEnumerable <IProperty> FindPrimaryKeyProperties <T>(this IDbContextDependencies dbContext, T entity) { return(dbContext.Model.FindEntityType(entity.GetType()).FindPrimaryKey().Properties); }
internal static IEntityType GetEntityType <T>(this IDbContextDependencies context) { return(context.Model.FindEntityType(typeof(T)) ?? throw new ArgumentException($"The entity {typeof(T).Name} was not found in the model of the current context")); }