コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        private static IEnumerable <IProperty> GetKeyProperties(this IDbContextDependencies context, Type entityType)
        {
            var keyProperties = KeyPropertiesByEntityType.GetOrAdd(
                entityType,
                t => context.FindPrimaryKeyProperties(entityType).ToArray());

            return(keyProperties);
        }
コード例 #5
0
 public static IDbContextDependencies GetDependencies([NotNull] this IDbContextDependencies context)
 => context;
コード例 #6
0
 public static IDbContextDependencies GetDependencies(this IDbContextDependencies context)
 => context;
コード例 #7
0
 private static IEnumerable <IProperty> FindPrimaryKeyProperties <T>(this IDbContextDependencies dbContext, T entity)
 {
     return(dbContext.Model.FindEntityType(entity.GetType()).FindPrimaryKey().Properties);
 }
コード例 #8
0
ファイル: DbContextExtensions.cs プロジェクト: ppx80/BHulk
 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"));
 }