protected override void AddDiscriminatorToSelect(SelectFragment select, string name, string suffix)
 {
     if (IsDiscriminatorFormula)
     {
         select.AddFormula(name, DiscriminatorFormulaTemplate, DiscriminatorAlias);
     }
     else
     {
         select.AddColumn(name, DiscriminatorColumnName, DiscriminatorAlias);
     }
 }
        public override SqlString PropertySelectFragment(string alias, string suffix)
        {
            SelectFragment frag = new SelectFragment(factory.Dialect)
                                  .SetSuffix(suffix)
                                  .SetUsedAliases(IdentifierAliases);

            if (HasSubclasses)
            {
                frag.AddColumn(alias, DiscriminatorColumnName, DiscriminatorAlias);
            }

            return(frag.AddColumns(alias, subclassColumnClosure, subclassColumnAliasClosure)
                   .AddFormulas(alias, subclassFormulaTemplateClosure, subclassFormulaAliasClosure)
                   .ToSqlStringFragment());
        }
Exemplo n.º 3
0
        public SqlString SelectFragment(string alias)
        {
            SelectFragment frag = new SelectFragment(dialect)
                                  .SetSuffix(String.Empty) //always ignore suffix for collection columns
                                  .AddColumns(alias, keyColumnNames, keyColumnAliases)
                                  .AddColumns(alias, elementColumnNames, elementColumnAliases);

            if (hasIndex)
            {
                frag.AddColumns(alias, indexColumnNames, indexColumnAliases);
            }
            if (hasIdentifier)
            {
                frag.AddColumn(alias, identifierColumnName, identifierColumnAlias);
            }
            return(frag.ToSqlStringFragment(false));
        }
Exemplo n.º 4
0
        protected override SelectFragment GenerateSelectFragment(string alias, string columnSuffix)
        {
            /*
             * NH-1747 FIX
             * Note: the fix for NH-1747 may cause some problem when the same ColumnName is used to represent two different properties in the same hierarchy
             * In all our test it happened only for NHibernate.Test.Legacy.MultiTableTest.MultiTableCollections
             * The mapping Multi.hbm.xml had a column named "parent" to represent the Key of a set for the relation Lower->Top and SubMulti->SubMulti everything in the same hierarchy
             * NH TODO: Have to add an early check of same ColumnName used to represent two relations.
             */
            var ojl            = (IOuterJoinLoadable)ElementPersister;
            var selectFragment = new SelectFragment(Dialect).SetSuffix(columnSuffix);
            var columnNames    = KeyColumnNames;
            var columnAliases  = KeyColumnAliases;

            for (int i = 0; i < columnNames.Length; i++)
            {
                var column     = columnNames[i];
                var tableAlias = ojl.GenerateTableAliasForColumn(alias, column);
                selectFragment.AddColumn(tableAlias, column, columnAliases[i]);
            }
            return(selectFragment);
        }
 protected override void AddDiscriminatorToSelect(SelectFragment select, string name, string suffix)
 {
     select.AddColumn(name, DiscriminatorColumnName, DiscriminatorAlias);
 }