Exemplo n.º 1
0
        private void GetTypeAliases()
        {
            var command = _connection.CreateCommand();

            command.CommandText = @"SELECT
                        [type_name],
                        [underlying_system_type]
                        FROM
                        (SELECT
                          t1.[name] as [type_name],
                          ( CASE WHEN t1.[xusertype] = t1.[xtype] THEN NULL
                            ELSE
                              ( SELECT t2.[name]
                                FROM [sys].[systypes] AS t2
                                WHERE t2.[xusertype] = t2.[xtype]
                                AND t2.[xusertype] = t1.[xtype] )
                            END) as [underlying_system_type]
                          FROM [sys].[systypes] AS t1
                        ) AS t
                        WHERE [underlying_system_type] IS NOT NULL";

            var typeAliasMap = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var alias = reader.GetValueOrDefault <string>("type_name");
                    var underlyingSystemType = reader.GetValueOrDefault <string>("underlying_system_type");
                    Logger.LogTrace(SqlServerDesignStrings.FoundTypeAlias(alias, underlyingSystemType));
                    typeAliasMap.Add(alias, underlyingSystemType);
                }
            }

            _databaseModel.SqlServer().TypeAliases = typeAliasMap;
        }