public IDictionary <int, AbstractItemExtensionCollection> GetAbstractItemExtensionData(int extensionContentId, IEnumerable <int> ids, ContentPersistentData baseContent, bool loadAbstractItemFields, bool isStage, IDbTransaction transaction = null) { var extTableName = QpTableNameHelper.GetTableName(extensionContentId, isStage); var idListTable = SqlQuerySyntaxHelper.IdList(UnitOfWork.DatabaseType, "@ids", "ids"); var withNoLock = SqlQuerySyntaxHelper.WithNoLock(UnitOfWork.DatabaseType); var extFieldsQuery = $@"SELECT * FROM {extTableName} ext {withNoLock} INNER JOIN {idListTable} on Id = ext.itemid {(loadAbstractItemFields ? $"INNER JOIN {baseContent.GetTableName(isStage)} ai on ai.Content_item_id = ext.itemid" : "")}"; using (var command = UnitOfWork.Connection.CreateCommand()) { command.CommandText = extFieldsQuery; command.Parameters.Add(SqlQuerySyntaxHelper.GetIdsDatatableParam("@Ids", ids, UnitOfWork.DatabaseType)); command.Transaction = transaction; return(LoadAbstractItemExtension(command)); } }
public IDictionary <int, M2mRelations> GetManyToManyData(IEnumerable <int> ids, bool isStage, IDbTransaction transaction = null) { var m2MTableName = QpTableNameHelper.GetM2MTableName(isStage); var idListTable = SqlQuerySyntaxHelper.IdList(UnitOfWork.DatabaseType, "@ids", "ids"); var withNoLock = SqlQuerySyntaxHelper.WithNoLock(UnitOfWork.DatabaseType); var query = $@" SELECT link_id, item_id, linked_item_id FROM {m2MTableName} link {withNoLock} INNER JOIN {idListTable} on Id = link.item_id"; using (var command = UnitOfWork.Connection.CreateCommand()) { command.CommandText = query; command.Parameters.Add(SqlQuerySyntaxHelper.GetIdsDatatableParam("@Ids", ids, UnitOfWork.DatabaseType)); command.Transaction = transaction; var result = new Dictionary <int, M2mRelations>(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { var itemId = Convert.ToInt32(reader.GetDecimal(reader.GetOrdinal("item_id"))); if (!result.ContainsKey(itemId)) { result[itemId] = new M2mRelations(); } result[itemId] .AddRelation(Convert.ToInt32(reader.GetDecimal(reader.GetOrdinal("link_id"))), Convert.ToInt32(reader.GetDecimal(reader.GetOrdinal("linked_item_id")))); } return(result); } } }