private string GetSelectSql(int?count, string additionalSql) { IClassMetadata metadata = this.Session.SessionFactory.GetClassMetadata(typeof(ModelType)); SingleTableEntityPersister entityPersister = metadata as SingleTableEntityPersister; string[] subclassColumnClosure = entityPersister.GetType().GetProperty("SubclassColumnClosure", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(entityPersister, null) as string[]; List <string> selectColumns = new List <string>(); string idColumn = entityPersister.IdentifierPropertyName; selectColumns.Add(idColumn); for (int i = 0; i < entityPersister.PropertyNames.Length; i++) { string propertyName = entityPersister.PropertyNames[i]; string columnName = subclassColumnClosure[i]; string selectColumn = columnName; if (propertyName != columnName) { selectColumn = string.Format("{0} as {1}", columnName, propertyName); } selectColumns.Add(selectColumn); } string top = ""; if (count.HasValue) { top = "top " + count; } string sql = string.Format("SELECT {0} {1} from {2} {3}", top, string.Join(",", selectColumns), entityPersister.TableName, additionalSql); return(sql); }
private void GetClasses(ISession session) { IDictionary metadata = session.SessionFactory.GetAllClassMetadata(); foreach (DictionaryEntry entry in metadata) { SingleTableEntityPersister persister = (SingleTableEntityPersister)entry.Value; m_Classes.Add(persister.ClassName, new DomainClass(session, persister.TableName)); } }
private StandardProperty GetProperty(SingleTableEntityPersister persister, string propertyName) { for (int i = 0; i < persister.PropertyNames.Length; i++) { if (persister.PropertyNames[i] == propertyName) { return(persister.EntityMetamodel.Properties[i]); } } throw new ODataException(String.Format(ErrorMessages.ODataRequest_PropertyDoesNotExistOnParent, persister.EntityType.ReturnedClass.Name, propertyName)); }
public FilteredQueryOver(ISession session) { session.ThrowIfNull("session"); Session = session; var metadata = Session.SessionFactory.GetClassMetadata(typeof(TEntity)); entityPersister = metadata as SingleTableEntityPersister; naturalIdProperties = metadata.NaturalIdentifierProperties.Select(x => metadata.PropertyNames[x]).ToList(); var criteria = (CriteriaImpl)Session.CreateCriteria <TEntity>(); var selectTranslator = new CriteriaQueryTranslator(Session.GetSessionImplementation().Factory, criteria, criteria.EntityOrClassName, "_Data"); foreach (var property in metadata.PropertyNames) { selectedPropertyToColumnAliasMap[property] = selectTranslator.GetColumnsUsingProjection(criteria, property).ToList(); } baseSelectSql = criteria.GenerateSql(translator: selectTranslator); }