Example #1
0
        public void HowToExample1()
        {
            UserGroupLinkEntity linkAlias = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            Assert.That(linkAlias, Is.Null);
        }
Example #2
0
        public void CanRightOuterJoinCollectionWithRevealAndLambdas()
        {
            Reveal.SetDefaultConvention(x => x);

            UserGroupLinkEntity     link         = null;
            GroupEntity             group        = null;
            CustomerGroupLinkEntity customerLink = null;
            CustomerEntity          customer     = null;

            FlowQuerySelection <string> groups1 = Query <UserEntity>()
                                                  .RightOuter.Join(u => u.Groups, () => link)
                                                  .RightOuter.Join(u => link.Group, () => group)
                                                  .RightOuter.Join(u => group.Customers, () => customerLink)
                                                  .RightOuter.Join(u => customerLink.Customer, () => customer)
                                                  .Distinct()
                                                  .Select(u => customer.Name);

            Assert.That(groups1.Count(), Is.EqualTo(4));

            FlowQuerySelection <string> groups2 = Query <UserEntity>()
                                                  .RightOuter.Join(u => u.Groups, () => link, () => link.Id == null)
                                                  .RightOuter.Join(u => link.Group, () => group, () => group.Id == null)
                                                  .RightOuter.Join(u => group.Customers, () => customerLink, () => customerLink.Id == null)
                                                  .RightOuter.Join(u => customerLink.Customer, () => customer, () => customer.Id == null)
                                                  .Distinct()
                                                  .Select(u => customer.Name);

            Assert.That(groups2.Count(), Is.EqualTo(4));

            Reveal.ClearDefaultConvention();
        }
Example #3
0
        public void CanRightOuterJoinWithSpecifiedOnClause()
        {
            UserGroupLinkEntity link  = null;
            GroupEntity         group = null;

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .RightOuter.Join(u => u.Groups, () => link, () => link.Id == 2)
                                                    .RightOuter.Join(u => link.Group, () => group, () => group.Id == 2)
                                                    .Select(u => link.Group.Id);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Id, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(1));

            IDetachedFlowQuery <UserEntity> query2 = DetachedQuery <UserEntity>()
                                                     .RightOuter.Join("Groups", () => link, () => link.Id == 2)
                                                     .Select(u => link.Group.Id);

            FlowQuerySelection <GroupEntity> groups2 = Query <GroupEntity>()
                                                       .Where(g => g.Id, FqIs.In(query2))
                                                       .Select();

            Assert.That(groups2.Count(), Is.EqualTo(2));
        }
Example #4
0
        public void HowToExample3WithOnClaus()
        {
            UserGroupLinkEntity linkAlias = null;

            FlowQuerySelection <UserEntity> users = Session.FlowQuery <UserEntity>()
                                                    .Inner.Join(x => x.Groups, () => linkAlias, () => linkAlias.Group.Id == 1)
                                                    .Select();

            Assert.That(users.Count(), Is.EqualTo(2));
        }
Example #5
0
        public void CanLeftOuterJoin()
        {
            UserGroupLinkEntity link = null;

            var groups = Query <UserEntity>()
                         .LeftOuter.Join(u => u.Groups, () => link)
                         .Select(u => new { link.Group });

            Assert.That(groups.Count(), Is.EqualTo(6));
        }
        public void SetLockModeExample4()
        {
            UserGroupLinkEntity groupLink = null;

            FlowQuerySelection <UserEntity> users = Session.FlowQuery <UserEntity>()
                                                    .Inner.Join(x => x.Groups, () => groupLink)
                                                    .Lock("groupLink").Write()
                                                    .Select();

            Assert.That(users.Count(), Is.EqualTo(5));
        }
Example #7
0
        public void WhereWithProjection1NotEqualProjection2()
        {
            UserGroupLinkEntity link = null;

            var users = Query <UserEntity>()
                        .Inner.Join(u => u.Groups, () => link)
                        .Where(u => u.Id != link.Id)
                        .Select(u => new { u.Username, UserId = u.Id, LinkId = link.Id });

            Assert.That(users.Count(), Is.EqualTo(4));
        }
Example #8
0
        private void CanUseParameterAsAliasForJoin(GroupEntity group)
        {
            UserGroupLinkEntity groupLink = null;

            FlowQuerySelection <long> groupIds = Query <UserEntity>()
                                                 .Inner.Join(x => x.Groups, () => groupLink)
                                                 .Inner.Join(x => groupLink.Group, () => group)
                                                 .Select(x => group.Id);

            Assert.That(groupIds.Any());
        }
Example #9
0
        public void CanJoinUsingString()
        {
            UserGroupLinkEntity link = null;

            var groups = Query <UserEntity>()
                         .Inner.Join("Groups", () => link)
                         .Distinct()
                         .Select(u => new { link.Group });

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #10
0
        public void CanUseExternalStaticPropertyAsAliasForJoin()
        {
            UserGroupLinkEntity groupLink = null;

            FlowQuerySelection <long> groupIds = Query <UserEntity>()
                                                 .Inner.Join(x => x.Groups, () => groupLink)
                                                 .Inner.Join(x => groupLink.Group, () => NhFq5Aliases.StaticGroupProperty)
                                                 .Select(x => NhFq5Aliases.StaticGroupProperty.Id);

            Assert.That(groupIds.Any());
        }
Example #11
0
        public void CanInnerJoinWithSpecifiedOnClause()
        {
            UserGroupLinkEntity link = null;

            var groups = Query <UserEntity>()
                         .Inner.Join(u => u.Groups, () => link, () => link.Id == 0)
                         .Distinct()
                         .Select(u => new { link.Group });

            Assert.That(groups.Count(), Is.EqualTo(0));
        }
Example #12
0
        public void CanUsePrivateFieldAsAliasForJoin()
        {
            UserGroupLinkEntity groupLink = null;

            FlowQuerySelection <long> groupIds = Query <UserEntity>()
                                                 .Inner.Join(x => x.Groups, () => groupLink)
                                                 .Inner.Join(x => groupLink.Group, () => _groupField)
                                                 .Select(x => _groupField.Id);

            Assert.That(groupIds.Any());
        }
Example #13
0
        public void AndWithJoinedEntityProjection()
        {
            UserGroupLinkEntity link = null;

            var users = Query <UserEntity>()
                        .Inner.Join(u => u.Groups, () => link)
                        .And(u => u.Id == link.Id)
                        .Select(u => new { UserId = u.Id, LinkId = link.Id });

            Assert.That(users.Count(), Is.EqualTo(1));
            Assert.That(users.First().UserId, Is.EqualTo(users.First().LinkId));
        }
Example #14
0
        public void CanUseExternalFieldAsAliasForJoin()
        {
            UserGroupLinkEntity groupLink = null;

            var aliases = new NhFq5Aliases();

            FlowQuerySelection <long> groupIds = Query <UserEntity>()
                                                 .Inner.Join(x => x.Groups, () => groupLink)
                                                 .Inner.Join(x => groupLink.Group, () => aliases._groupField)
                                                 .Select(x => aliases._groupField.Id);

            Assert.That(groupIds.Any());
        }
Example #15
0
        public void CanInnerJoinOnInnerJoinedEntityUsingString()
        {
            UserGroupLinkEntity link  = null;
            GroupEntity         group = null;

            var groups = Query <UserEntity>()
                         .Inner.Join("Groups", () => link)
                         .Inner.Join("link.Group", () => group)
                         .Distinct()
                         .Select(u => new { group.Name });

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #16
0
        public void CanFullJoinUsingString()
        {
            UserGroupLinkEntity link = null;

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .Full.Join("Groups", () => link)
                                                    .Distinct().Select(u => link.Group.Id);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Id, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #17
0
        public void CanRightOuterJoin()
        {
            UserGroupLinkEntity link = null;

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .RightOuter.Join(u => u.Groups, () => link)
                                                    .Select(u => link.Group.Id);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Id, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
        public void SetFetchModeExample4()
        {
            UserGroupLinkEntity groupLink = null;

            IImmediateFlowQuery <UserEntity> query = Session.FlowQuery <UserEntity>()
                                                     .Fetch(x => x.Groups, () => groupLink).Eagerly()
                                                     .Fetch(x => groupLink.Group.Customers).Eagerly();

            // ... code ...
            FlowQuerySelection <UserEntity> users = query
                                                    .ClearFetches()
                                                    .Select();

            Assert.That(users.Count(), Is.EqualTo(4));
        }
Example #19
0
        private UserDto[] FetchUsersInGroupA1ByFilter(IQueryFilter <UserEntity> userFilter)
        {
            UserGroupLinkEntity userGroupLink = null;
            UserEntity          user          = null;

            return(Query <GroupEntity>()
                   .Inner.Join(x => x.Users, () => userGroupLink)
                   .Inner.Join(x => userGroupLink.User, () => user)
                   .And(x => x.Name == "A1")
                   .ApplyFilterOn(() => user, userFilter)
                   .Select(x => new UserDto
            {
                Id = user.Id
            }));
        }
Example #20
0
        public void HowToExample6ClearJoins()
        {
            UserGroupLinkEntity linkAlias = null;

            IImmediateFlowQuery <UserEntity> query = Session.FlowQuery <UserEntity>()
                                                     .Inner.Join(x => x.Groups, () => linkAlias, () => linkAlias.Group.Id == 1);

            var morphable = (IMorphableFlowQuery)query;

            Assert.That(morphable.Joins.Count, Is.EqualTo(1));

            query.ClearJoins();

            Assert.That(morphable.Joins.Count, Is.EqualTo(0));
        }
Example #21
0
        public void CanRightOuterJoin()
        {
            UserGroupLinkEntity link = null;

            var groups1 = Query <UserEntity>()
                          .RightOuter.Join(u => u.Groups, () => link)
                          .Select(u => new { link.Group });

            Assert.That(groups1.Count(), Is.EqualTo(5));

            var groups2 = Query <UserEntity>()
                          .RightOuter.Join(u => u.Groups, () => link, () => link.Id == null)
                          .Select(u => new { link.Group });

            Assert.That(groups2.Count(), Is.EqualTo(5));
        }
        public void SetLockModeExample5()
        {
            UserGroupLinkEntity groupLink = null;

            IImmediateFlowQuery <UserEntity> query = Session.FlowQuery <UserEntity>()
                                                     .Inner.Join(x => x.Groups, () => groupLink)
                                                     .Lock().Write()
                                                     .Lock(() => groupLink).Write();

            // ... code ...
            FlowQuerySelection <UserEntity> users = query
                                                    .ClearLocks()
                                                    .Select();

            Assert.That(users.Count(), Is.EqualTo(5));
        }
Example #23
0
        public void CanFullJoinUsingString()
        {
            UserGroupLinkEntity link = null;

            var groups1 = Query <UserEntity>()
                          .Full.Join("Groups", () => link)
                          .Select(u => new { link.Group });

            Assert.That(groups1.Count(), Is.EqualTo(6));

            var groups2 = Query <UserEntity>()
                          .Full.Join("Groups", () => link, () => link.Id == null)
                          .Select(u => new { link.Group });

            Assert.That(groups2.Count(), Is.EqualTo(9));
        }
Example #24
0
        public void TestSelectByAliasReturnsNull()
        {
            UserGroupLinkEntity groupLink = null;
            GroupEntity         group     = null;

            GroupEntity[] stuff1 = Query <UserEntity>()
                                   .Inner.Join(x => x.Groups, () => groupLink)
                                   .Inner.Join(x => groupLink.Group, () => group)
                                   .Select(x => group)
                                   .ToArray();

            foreach (GroupEntity item in stuff1)
            {
                Assert.That(item, Is.Null);
            }
        }
Example #25
0
        public void CanLeftOuterJoinWithProvidedRevealConvention()
        {
            UserGroupLinkEntity link  = null;
            GroupEntity         group = null;

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .LeftOuter.Join(u => u.Groups, () => link)
                                                    .LeftOuter.Join(u => link.Group, () => group, new CustomConvention(x => x))
                                                    .Select(u => group.Id);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Id, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #26
0
        public void CanJoinWithoutInParameterAndWithoutConvention()
        {
            UserGroupLinkEntity link = null;

            UserEntity user = null;

            GroupEntity group = null;

            var groups = Session.FlowQuery(() => user)
                         .Inner.Join(u => u.Groups, () => link)
                         .Inner.Join(u => link.Group, () => group)
                         .Distinct()
                         .Select(u => new { link.Group });

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #27
0
        public void CanInnerJoinOnInnerJoinedEntityUsingString()
        {
            UserGroupLinkEntity link  = null;
            GroupEntity         group = null;

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .Inner.Join("Groups", () => link)
                                                    .Inner.Join("link.Group", () => group)
                                                    .Distinct().Select(u => group.Name);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Name, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(2));
        }
Example #28
0
        public void CanJoinMultipleTimesWithSpecifiedOnClauses()
        {
            UserGroupLinkEntity link = null;

            UserEntity user = null;

            GroupEntity group = null;

            var groups = Session.FlowQuery(() => user)
                         .Inner.Join(u => u.Groups, () => link, () => link.Id == user.Id)
                         .Inner.Join(u => link.Group, () => group, () => group.Name == "A1")
                         .Distinct()
                         .Select(u => new { link.Group });

            Assert.That(groups.Count(), Is.EqualTo(1));
        }
Example #29
0
        public void JoiningPropertyTwiceWithDifferentAliasesThrows()
        {
            UserGroupLinkEntity link = null, link2 = null;

            Assert
            .That
            (
                () =>
            {
                DetachedQuery <UserEntity>()
                .Inner.Join(x => x.Groups, () => link)
                .Inner.Join(x => x.Groups, () => link2)
                .Select(x => x.Id);
            },
                Throws.InstanceOf <InvalidOperationException>()
            );
        }
Example #30
0
        public void CanInnerJoinWithJoinInCombinationWithRevealFramework()
        {
            UserGroupLinkEntity link = null;

            IRevealer <UserEntity> r = Reveal.CreateRevealer <UserEntity>(new CustomConvention(s => s));

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <UserEntity>()
                                                    .Inner.Join(r.Reveal(x => x.Groups), () => link)
                                                    .Distinct()
                                                    .Select(u => link.Group.Id);

            FlowQuerySelection <GroupEntity> groups = Query <GroupEntity>()
                                                      .Where(g => g.Id, FqIs.In(query))
                                                      .Select();

            Assert.That(groups.Count(), Is.EqualTo(2));
        }