public override void AppendJoinsToSelectStatement(SqlStatement statement, System.Text.StringBuilder builder)
        {
            if (statement == null)
            {
                throw new ArgumentNullException("statement");
            }
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }

            // et...
            EntityType et = statement.EntityType;

            if (et == null)
            {
                throw new InvalidOperationException("et is null.");
            }

            // dialect...
            SqlDialect dialect = statement.Dialect;

            if (dialect == null)
            {
                throw new InvalidOperationException("dialect is null.");
            }

            // names...
            string masterName = dialect.FormatTableName(et.NativeName);

            if (masterName == null)
            {
                throw new InvalidOperationException("'masterName' is null.");
            }
            if (masterName.Length == 0)
            {
                throw new InvalidOperationException("'masterName' is zero-length.");
            }
            string extensionName = dialect.FormatTableName(et.NativeNameExtended);

            if (extensionName == null)
            {
                throw new InvalidOperationException("'extensionName' is null.");
            }
            if (extensionName.Length == 0)
            {
                throw new InvalidOperationException("'extensionName' is zero-length.");
            }

            // dialect...
            builder.Append(" LEFT OUTER JOIN ");
            builder.Append(extensionName);
            builder.Append(" ON ");

            // keys...
            EntityField[] keyFields = et.GetKeyFields();
            if (keyFields == null)
            {
                throw new InvalidOperationException("'keyFields' is null.");
            }
            if (keyFields.Length == 0)
            {
                throw new InvalidOperationException("'keyFields' is zero-length.");
            }

            for (int index = 0; index < keyFields.Length; index++)
            {
                if (index > 0)
                {
                    builder.Append(", ");
                }

                // add...
                builder.Append(dialect.FormatColumnName(keyFields[index].Name));
                builder.Append("=");
                builder.Append(dialect.FormatColumnName(MangleIdColumnName(keyFields[index].NativeName)));
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns true if the property is being used.
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public override bool IsPropertyInUse(EntityType entityType, string name)
        {
            if (entityType == null)
            {
                throw new ArgumentNullException("entityType");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (name.Length == 0)
            {
                throw new ArgumentOutOfRangeException("'name' is zero-length.");
            }

            // table?
            if (IsExtendedPropertiesTableCreated(entityType))
            {
                // dialect...
                SqlDialect dialect = entityType.Dialect;
                if (dialect == null)
                {
                    throw new InvalidOperationException("dialect is null.");
                }

                // find it...
                StringBuilder builder = new StringBuilder();
                builder.Append(dialect.SelectKeyword);
                builder.Append(" TOP 1 ");
                builder.Append(dialect.FormatColumnName("Name"));
                builder.Append(" ");
                builder.Append(dialect.FromKeyword);
                builder.Append(" ");
                builder.Append(dialect.FormatNativeName(entityType.NativeNameExtended));
                builder.Append(" ");
                builder.Append(dialect.WhereKeyword);
                builder.Append(" ");
                builder.Append(dialect.FormatColumnName("Name"));
                builder.Append("=");
                const string paramName = "name";
                builder.Append(dialect.FormatVariableNameForQueryText(paramName));

                // create...
                SqlStatement statement = new SqlStatement(builder.ToString());
                statement.Parameters.Add(new SqlStatementParameter(paramName, DbType.String, name));

                // run...
                object result = Database.ExecuteScalar(statement);
                if (result is string)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }