Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
0
        public void SpecifyingSameFetchTwiceThrowsNothing()
        {
            CustomerGroupLinkEntity cl = null;

            IImmediateFlowQuery <UserGroupLinkEntity> stuff = Query <UserGroupLinkEntity>()
                                                              .Fetch(x => x.Group.Customers, () => cl).Eagerly()
                                                              .Fetch(x => x.Group.Customers, () => cl).Eagerly();

            Assert.That(stuff, Is.Not.Null);
        }
Ejemplo n.º 3
0
        public void SpecifyingSameAliasTwiceThrows()
        {
            CustomerGroupLinkEntity cl = null;

            Assert
            .That
            (
                () =>
            {
                Query <UserGroupLinkEntity>()
                .Fetch(x => x.Group, () => cl).Eagerly()
                .Fetch(x => x.Group.Customers, () => cl).Eagerly();
            },
                Throws.InvalidOperationException
            );
        }
Ejemplo n.º 4
0
        public void CanFetchEagerly()
        {
            CustomerGroupLinkEntity cl = null;

            UserGroupLinkEntity[] stuff = Query <UserGroupLinkEntity>()
                                          .Fetch(x => x.Group.Customers, () => cl).Eagerly()
                                          .Fetch(x => cl.Customer).Eagerly()
                                          .Select()
                                          .ToArray();

            foreach (UserGroupLinkEntity item in stuff)
            {
                Assert.That(NHibernateUtil.IsInitialized(item.Group), "Group");
                Assert.That(NHibernateUtil.IsInitialized(item.Group.Customers), "Customers");

                foreach (CustomerGroupLinkEntity itemitem in item.Group.Customers)
                {
                    Assert.That(NHibernateUtil.IsInitialized(itemitem.Customer), "Customer");
                }
            }
        }
Ejemplo n.º 5
0
        public void CanRightOuterJoinCollectionWithRevealAndLambdas()
        {
            Reveal.SetDefaultConvention(x => x);

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

            IDetachedFlowQuery <UserEntity> query = DetachedQuery <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);

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

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

            IDetachedFlowQuery <UserEntity> query2 = DetachedQuery <UserEntity>()
                                                     .RightOuter.Join(u => u.Groups, () => link, () => link.Id == 0)
                                                     .RightOuter.Join(x => link.Group, () => group, () => group.Id == 0)
                                                     .RightOuter.Join(u => group.Customers, () => customerLink, () => customerLink.Id == 0, null)
                                                     .RightOuter.Join(u => customerLink.Customer, () => customer, () => customer.Id == 0)
                                                     .Distinct()
                                                     .Select(u => customer.Name);

            FlowQuerySelection <CustomerEntity> customers2 = Query <CustomerEntity>()
                                                             .Where(g => g.Name, FqIs.In(query2))
                                                             .Select();

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

            Reveal.ClearDefaultConvention();
        }
        private static void AddData()
        {
            using (ISession session = _factory.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    var c1 = new CustomerEntity("Pelle Svensson", new DateTime(2001, 9, 11));
                    var c2 = new CustomerEntity("Arne Vaise", new DateTime(2005, 3, 15));
                    var c3 = new CustomerEntity("Kalle Palle", DateTime.Now);
                    var c4 = new CustomerEntity("Lisa Oscarsson", new DateTime(2007, 12, 29));

                    session.Save(c1);
                    session.Save(c2);
                    session.Save(c3);
                    session.Save(c4);

                    var s1 = new Setting();
                    var s2 = new Setting();
                    var s3 = new Setting();
                    var s4 = new Setting();
                    var s5 = new Setting();
                    var s6 = new Setting();

                    session.Save(s1);
                    session.Save(s2);
                    session.Save(s3);
                    session.Save(s4);
                    session.Save(s5);
                    session.Save(s6);

                    var u1 = new UserEntity
                             (
                        "Wimpy",
                        "Cool01",
                        "Niklas",
                        "Kallander",
                        new DateTime(2001, 9, 11),
                        RoleEnum.Administrator,
                        "1"
                             )
                    {
                        LastLoggedInStamp = DateTime.Now,
                        IsOnline          = true,
                        Setting           = s6,
                        NumberOfLogOns    = 10
                    };

                    var u2 = new UserEntity
                             (
                        "Izmid",
                        "Cool02",
                        "Lars",
                        "Wilk",
                        new DateTime(2001, 4, 22),
                        RoleEnum.Webmaster,
                        "2"
                             )
                    {
                        LastLoggedInStamp = DateTime.Now,
                        IsOnline          = true,
                        Setting           = s6,
                        NumberOfLogOns    = 17
                    };

                    var u3 = new UserEntity
                             (
                        "Empor",
                        "Cool03",
                        "Kossan",
                        "Muu",
                        new DateTime(2001, 5, 3),
                        RoleEnum.Administrator,
                        "3"
                             )
                    {
                        LastLoggedInStamp = DateTime.Now,
                        IsOnline          = true,
                        Setting           = s6,
                        NumberOfLogOns    = 12
                    };

                    var u4 = new UserEntity("Lajsa", null, "Lotta", "Brak", DateTime.Now, RoleEnum.Standard, "4")
                    {
                        Setting        = s6,
                        NumberOfLogOns = 4
                    };

                    session.Save(u1);
                    session.Save(u2);
                    session.Save(u3);
                    session.Save(u4);

                    var g1 = new GroupEntity("A1", DateTime.Now);
                    var g2 = new GroupEntity("B2", new DateTime(2009, 11, 27));

                    session.Save(g1);
                    session.Save(g2);

                    var cgl1 = new CustomerGroupLinkEntity(c1, g1);
                    var cgl2 = new CustomerGroupLinkEntity(c2, g1);
                    var cgl3 = new CustomerGroupLinkEntity(c3, g1);
                    var cgl4 = new CustomerGroupLinkEntity(c4, g1);
                    var cgl5 = new CustomerGroupLinkEntity(c1, g2);
                    var cgl6 = new CustomerGroupLinkEntity(c3, g2);

                    session.Save(cgl1);
                    session.Save(cgl2);
                    session.Save(cgl3);
                    session.Save(cgl4);
                    session.Save(cgl5);
                    session.Save(cgl6);

                    g1.Customers.Add(cgl1);
                    g1.Customers.Add(cgl2);
                    g1.Customers.Add(cgl3);
                    g1.Customers.Add(cgl4);
                    g2.Customers.Add(cgl5);
                    g2.Customers.Add(cgl6);

                    c1.Groups.Add(cgl1);
                    c1.Groups.Add(cgl5);
                    c2.Groups.Add(cgl2);
                    c3.Groups.Add(cgl3);
                    c3.Groups.Add(cgl6);
                    c4.Groups.Add(cgl4);

                    var ugl1 = new UserGroupLinkEntity(u1, g1);
                    var ugl2 = new UserGroupLinkEntity(u1, g2);
                    var ugl3 = new UserGroupLinkEntity(u2, g2);
                    var ugl4 = new UserGroupLinkEntity(u3, g1);
                    var ugl5 = new UserGroupLinkEntity(u3, g2);

                    session.Save(ugl1);
                    session.Save(ugl2);
                    session.Save(ugl3);
                    session.Save(ugl4);
                    session.Save(ugl5);

                    g1.Users.Add(ugl1);
                    g1.Users.Add(ugl4);
                    g2.Users.Add(ugl2);
                    g2.Users.Add(ugl3);
                    g2.Users.Add(ugl5);

                    u1.Groups.Add(ugl1);
                    u1.Groups.Add(ugl2);
                    u2.Groups.Add(ugl3);
                    u3.Groups.Add(ugl4);
                    u3.Groups.Add(ugl5);

                    transaction.Commit();
                }
            }
        }