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))); } }
/// <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); } }