Relations bad aliases

Posts   
 
    
PSepah
User
Posts: 10
Joined: 24-Oct-2015
# Posted on: 09-Nov-2015 12:32:59   

Hi,

This is my ERD: Role<--(Inherited by RoleId)---Department Role<--(Inherited by RoleId)---Company Role----( M:1 on OwnerCompanyId)--->Role Enquiry--( M:1 on CustomerDepartmentId)--->Department

I have used the following relationships and predicate:

predicateExpression.AddWithOr(CompanyFields.Title.SetObjectAlias("OwnerCompany") == fieldValue); FilterToUse.Relations.Add(EnquiryEntity.Relations.DepartmentEntityUsingCustomerDepartmentId, "CustomerDepartment", JoinHint.Left); FilterToUse.Relations.Add(DepartmentEntity.Relations.CompanyEntityUsingOwnerCompanyId, "OwnerCompany", JoinHint.Left);

But I faced the following error: Relation at index 2 doesn't contain an entity already added to the FROM clause. Bad alias? on : e.DbCount = adapter.GetDbCount(e.ContainedCollection, FilterToUse);

Thank you in advance for your helping.

LLBLGenPro version: 4.2 SD.LLBLGen.Pro.ORMSupportClasses.dll: 4.2.15.410 Template group using: adapter .Net framework : 4.5 MSSQLSERVER: 2012

Stack trace: at SD.LLBLGen.Pro.ORMSupportClasses.RelationCollection.PreprocessRelations() at SD.LLBLGen.Pro.ORMSupportClasses.RelationCollection.ToQueryTextInternal(Boolean ansiJoins, String& nonAnsiWhereClause, String nonAnsiRootTableReference, String nonAnsiFieldSuffix) at SD.LLBLGen.Pro.ORMSupportClasses.RelationCollection.ToQueryText() at SD.LLBLGen.Pro.DQE.SqlServer.DynamicQueryEngine.CreateSelectDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, IRetrievalQuery query, IPredicate selectFilter, Int64 maxNumberOfItemsToReturn, ISortExpression sortClauses, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause, Boolean relationsSpecified, Boolean sortClausesSpecified) 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) at SD.LLBLGen.Pro.ORMSupportClasses.DynamicQueryEngineBase.CreateRowCountDQ(IEntityFieldCore[] selectList, IFieldPersistenceInfo[] fieldsPersistenceInfo, DbConnection connectionToUse, IPredicate selectFilter, IRelationCollection relationsToWalk, Boolean allowDuplicates, IGroupByCollection groupByClause) at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.CreateRowCountDQ(QueryParameters parameters) at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.GetDbCount(IEntityFields2 fields, IRelationPredicateBucket filter, IGroupByCollection groupByClause, Boolean allowDuplicates) at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.<>c__DisplayClassef.<GetDbCount>b__ee() at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.GetDbCount(IEntityCollection2 collection, IRelationPredicateBucket filter, IGroupByCollection groupByClause) at Collabora.ServiceManager.SharePoint.Layouts.ServiceManager.ManageEnquiries.EnquiryDsPerformGetDbCount(Object sender, PerformGetDbCountEventArgs2 e) at SD.LLBLGen.Pro.ORMSupportClasses.LLBLGenProDataSourceView2.ExecuteSelectEntityCollection(Int32 pageSize, Int32 pageNumber, DataSourceSelectArguments arguments) at SD.LLBLGen.Pro.ORMSupportClasses.LLBLGenProDataSourceView2.ExecuteSelect(DataSourceSelectArguments arguments) at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) at System.Web.UI.WebControls.DataBoundControl.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() at System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e) at Collabora.ServiceManager.SharePoint.Controls.GridViewCustom.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

hotchill avatar
hotchill
User
Posts: 180
Joined: 22-Jan-2007
# Posted on: 09-Nov-2015 14:34:39   

I am not sure and have not tested, but maybe you need to specify the start relation.

predicateExpression.AddWithOr(CompanyFields.Title.SetObjectAlias("CustomerDepartmentOwnerCompany") == fieldValue);
FilterToUse.Relations.Add(EnquiryEntity.Relations.DepartmentEntityUsingCustomerDepartmentId, "CustomerDepartment", JoinHint.Left);
FilterToUse.Relations.Add(DepartmentEntity.Relations.CompanyEntityUsingOwnerCompanyId, "CustomerDepartment", "CustomerDepartmentOwnerCompany", JoinHint.Left);
PSepah
User
Posts: 10
Joined: 24-Oct-2015
# Posted on: 09-Nov-2015 15:16:15   

Thank you very much that solved the problem simple_smile