v3 - adapter, FindRealAlias exception

Posts   
 
    
miloszes
User
Posts: 222
Joined: 03-Apr-2007
# Posted on: 07-Feb-2011 14:07:53   

Hello,

during creation of FieldName in custom predicate the following exception occures:

Object reference not set to an instance of an object.
   at SD.LLBLGen.Pro.ORMSupportClasses.DbSpecificCreatorBase.FindRealAlias(String containingObjectName, String objectAlias, String actualContainingObjectName) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DbSpecificCreatorBase.cs:line 851
   at SD.LLBLGen.Pro.ORMSupportClasses.DbSpecificCreatorBase.CreateFieldName(IFieldPersistenceInfo persistenceInfo, String fieldName, String objectAlias, Boolean appendAlias, String containingObjectName, String actualContainingObjectName) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DbSpecificCreatorBase.cs:line 249
   at SD.LLBLGen.Pro.ORMSupportClasses.DbSpecificCreatorBase.ConvertFieldToRawName(IEntityFieldCore fieldCore, IFieldPersistenceInfo persistenceInfo, String fieldName, String objectAlias, Boolean applyAggregateFunction) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DbSpecificCreatorBase.cs:line 961
   at SD.LLBLGen.Pro.ORMSupportClasses.DbSpecificCreatorBase.CreateFieldName(IEntityFieldCore fieldCore, IFieldPersistenceInfo persistenceInfo, String fieldName, String objectAlias, Boolean applyAggregateFunction) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DbSpecificCreatorBase.cs:line 285
   at Implementation.LLBLGen.Dependent.PostgresqlFullTextSearchExpression.ToQueryText(Boolean inHavingClause) in C:\projects\TFS\Common\dotNet\Implementation.LLBLGen.Dependent\Predicates\PostgresqlFullTextSearchExpression.cs:line 29
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText(Boolean inHavingClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 225
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText(Boolean inHavingClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 225
   at Implementation.LLBLGen.Dependent.Predicates.PostgreSqlFieldNamePredicate.ToQueryText(Boolean inHavingClause) in C:\projects\TFS\Common\dotNet\Implementation.LLBLGen.Dependent\Predicates\PostgreSqlFieldNamePredicate.cs:line 98
   at Implementation.LLBLGen.Dependent.PostgreSqlCustomInPredicate.ToQueryText(Boolean inHavingClause) in C:\projects\TFS\Common\dotNet\Implementation.LLBLGen.Dependent\Predicates\PostgreSqlCustomInPredicate.cs:line 24
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText(Boolean inHavingClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 225
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText(Boolean inHavingClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 225
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText(Boolean inHavingClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 225
   at SD.LLBLGen.Pro.ORMSupportClasses.PredicateExpression.ToQueryText() in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\QueryApiElements\PredicateExpression.cs:line 178
   at SD.LLBLGen.Pro.ORMSupportClasses.DynamicQueryEngineBase.AppendWhereClause(IPredicate filter, QueryFragments destination, IQuery query) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DynamicQueryEngineBase.cs:line 1441
   at SD.LLBLGen.Pro.ORMSupportClasses.DynamicQueryEngineBase.CreateSelectDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, IRetrievalQuery query, IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause, Boolean relationsSpecified, Boolean sortClausesSpecified) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DynamicQueryEngineBase.cs:line 1225
   at SD.LLBLGen.Pro.ORMSupportClasses.DynamicQueryEngineBase.CreateSelectDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, DbConnection connectionToUse, IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DynamicQueryEngineBase.cs:line 1088
   at SD.LLBLGen.Pro.DQE.PostgreSql.DynamicQueryEngine.CreatePagingSelectDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, DbConnection connectionToUse, IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\PostgreSqlDQE\DynamicQueryEngine.cs:line 265
   at SD.LLBLGen.Pro.ORMSupportClasses.DynamicQueryEngineBase.CreateSelectDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, DbConnection connectionToUse, IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Persistence\DynamicQueryEngineBase.cs:line 1156
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.CreateSelectDQ(IEntityFields2 fieldsToFetch, IFieldPersistenceInfo[] persistenceInfoObjects, IPredicateExpression filter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 4440
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityCollectionInternal(IEntityCollection2 collectionToFill, IRelationPredicateBucket& filterBucket, Int32 maxNumberOfItemsToReturn, ISortExpression sortClauses, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 4563
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityCollection(IEntityCollection2 collectionToFill, IRelationPredicateBucket filterBucket, Int32 maxNumberOfItemsToReturn, ISortExpression sortClauses, IPrefetchPath2 prefetchPath, ExcludeIncludeFieldsList excludedIncludedFields, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 2465
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchEntityCollection(IEntityCollection2 collectionToFill, IRelationPredicateBucket filterBucket, Int32 maxNumberOfItemsToReturn, ISortExpression sortClauses, IPrefetchPath2 prefetchPath, ExcludeIncludeFieldsList excludedIncludedFields) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v3.0\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 2384
   at AplusC.Common.Implementation.WithDependencies.Dao.BaseLLBLGenDAO.FetchEntityCollection(IDataAccessAdapter adapter, IEntityCollection2 collectionToFetch, IRelationPredicateBucket filterBucket, ExcludeIncludeFieldsList excludedFields, IPrefetchPath2 prefetchPath, ISortExpression sortClauses, Int32 maxNumberOfItemsToReturn) in C:\projects\TFS\Common\dotNet\Implementation.LLBLGen.Dependent\BaseClasses\BaseLLBLGenDAO.cs:line 46
   at AplusC.Common.Implementation.WithDependencies.Dao.BaseLLBLGenDAO.FetchEntityCollection(IEntityCollection2 collectionToFetch, IRelationPredicateBucket filterBucket, IPrefetchPath2 prefetchPath, Int32 maxNumberOfItemsToReturn) in C:\projects\TFS\Common\dotNet\Implementation.LLBLGen.Dependent\BaseClasses\BaseLLBLGenDAO.cs:line 53
   at AplusC.TvMan.New.CommonBusiness.Facades.CommonContentDao.GetContentsBySQLLLBLGen(String originalTitle, String title, String subtitle, Int64[] directorID, String year, String country, String languageID, Nullable`1 episodeNumber, Int32 count) in C:\projects\TFS\Common\dotNet\TvMan.CommonBusiness\Facades\CommonContentDao.cs:line 219
   at AplusC.TvMan.New.CommonBusiness.Managers.ContentMatchManager.Match(IEventEventEntity importedEvent, IContentMainContentEntity importedContent, String languageID, String senderID, Int32 maxRecordCountFetch) in C:\projects\TFS\Common\dotNet\TvMan.CommonBusiness\Managers\ContentMatchManager.cs:line 212
   at Steve.Server.DataInputProvider.SteveDataInputProviderFacade.<>c__DisplayClass1b.<MatchContent>b__19(IEventEventEntity broadcast) in C:\projects\TFS\Steve\Server\Steve.Server.DataInputProvider\Facades\SteveDataInputProviderFacade.cs:line 370

The predicate which cause a problem.

[Serializable]
    public class PostgresqlFullTextSearchExpression : FieldCompareExpressionPredicate
    {
        string pattern;

        public PostgresqlFullTextSearchExpression(IEntityFieldCore field, string pattern)
            : base(field, null, ComparisonOperator.None, null)
        {
            //escape a ' char, because of a query problem
            this.pattern = Regex.Replace(pattern, @"(?<rplc>[^']'[^']){1}", "''");
        }

        public override string ToQueryText(bool inHavingClause)
        {
            DbParameter parameter = base.DatabaseSpecificCreator.CreateParameter(System.Data.ParameterDirection.Input, this.pattern);

            base.Parameters.Add(parameter);

            string fieldName = this.DatabaseSpecificCreator.CreateFieldName(this.FieldCore, this.PersistenceInfo, this.FieldCore.Name, this.FieldCore.ObjectAlias, false);

            //we should also use a db method to lowercase. WARNING that method also transforms a string (changes some letters to other letters) so we cannot do that in the code!!
            return string.Format(@"plainto_tsquery('simple', content.to_lowercase({0})) @@ {1} ", parameter.ParameterName, fieldName);
        }

        public override string ToQueryText()
        {
            return this.ToQueryText(false);
        }
    }

All parameters passed into a method this.DatabaseSpecificCreator.CreateFieldName(this.FieldCore, this.PersistenceInfo, this.FieldCore.Name, this.FieldCore.ObjectAlias, false); seems ok. The object alias is set to null. Can you say what could be wrong basing provided info?

Regards, MiloszeS

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 07-Feb-2011 14:55:15   

The object alias is set to null.

Please try passing string.Empty instead.