private void AddSqlQueries(HbmMapping mappingSchema) { NamedSQLQueryBinder binder = new NamedSQLQueryBinder(this); foreach (object item in mappingSchema.Items1 ?? new object[0]) { HbmSqlQuery sqlQuerySchema = item as HbmSqlQuery; if (sqlQuerySchema != null) { binder.AddSqlQuery(sqlQuerySchema); } } }
private static IList <string> GetSynchronizedTables(HbmSqlQuery querySchema) { IList <string> synchronizedTables = new List <string>(); foreach (object item in querySchema.Items ?? Array.Empty <object>()) { HbmSynchronize synchronizeSchema = item as HbmSynchronize; if (synchronizeSchema != null) { synchronizedTables.Add(synchronizeSchema.table); } } return(synchronizedTables); }
public void AddSqlQuery(HbmSqlQuery querySchema) { mappings.AddSecondPass(delegate { string queryName = querySchema.name; string queryText = querySchema.GetText(); bool cacheable = querySchema.cacheable; string region = querySchema.cacheregion; int timeout = string.IsNullOrEmpty(querySchema.timeout) ? RowSelection.NoValue : int.Parse(querySchema.timeout); int fetchSize = querySchema.fetchsizeSpecified ? querySchema.fetchsize : -1; bool readOnly = querySchema.readonlySpecified ? querySchema.@readonly : false; string comment = null; bool callable = querySchema.callable; string resultSetRef = querySchema.resultsetref; FlushMode flushMode = FlushModeConverter.GetFlushMode(querySchema); CacheMode?cacheMode = (querySchema.cachemodeSpecified) ? querySchema.cachemode.ToCacheMode() : null; IDictionary <string, string> parameterTypes = new LinkedHashMap <string, string>(); IList <string> synchronizedTables = GetSynchronizedTables(querySchema); NamedSQLQueryDefinition namedQuery; if (string.IsNullOrEmpty(resultSetRef)) { ResultSetMappingDefinition definition = new ResultSetMappingBinder(Mappings).Create(querySchema); namedQuery = new NamedSQLQueryDefinition(queryText, definition.GetQueryReturns(), synchronizedTables, cacheable, region, timeout, fetchSize, flushMode, cacheMode, readOnly, comment, parameterTypes, callable); } else { // TODO: check there is no actual definition elemnents when a ref is defined namedQuery = new NamedSQLQueryDefinition(queryText, resultSetRef, synchronizedTables, cacheable, region, timeout, fetchSize, flushMode, cacheMode, readOnly, comment, parameterTypes, callable); } log.Debug("Named SQL query: {0} -> {1}", queryName, namedQuery.QueryString); mappings.AddSQLQuery(queryName, namedQuery); }); }
public ResultSetMappingDefinition Create(HbmSqlQuery sqlQuerySchema) { return(Create(sqlQuerySchema.name, sqlQuerySchema.Items)); }
public static FlushMode GetFlushMode(HbmSqlQuery querySchema) { return(GetFlushMode(querySchema.flushmodeSpecified, querySchema.flushmode)); }