Exemplo n.º 1
0
        public virtual IEnumerable <T> hasMany <T>(Expression <Func <T, bool> > predicate = null, bool withTrashed = false) where T : Model <T>, new()
        {
            //* Initialize target model
            var targetModel = DbFacade.DynamicModels[typeof(T).Name];

            //* Get this table and that table name
            var thisTableName = TableName;
            var thatTableName = targetModel.PocoData.TableInfo.TableName;

            //* Guessing intermediate table name
            var intermediaTable = DbFacade.GenerateIntermediateTable(thisTableName, thatTableName);

            // Call the FindAll to return the result
            var results = targetModel.FindAll <T>(
                (lin) => lin.Select("*")
                .From(thisTableName)
                .Join(intermediaTable)
                .On(fnHasManyMyKey(PocoData.TableInfo), fnStdGenerateForeignKey(thisTableName, intermediaTable), "")
                .Join(thatTableName)
                .On(fnHasManyMyKey(targetModel.PocoData.TableInfo), fnStdGenerateForeignKey(thatTableName, intermediaTable), "")
                .Where(predicate)) as IEnumerable <T>;

            return(results);
        }