public void OnlyInOperationTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction())
                {
                    var equipment1 = new Equipment();
                    var equipment2 = new Equipment();
                    var equipment3 = new Equipment();

                    var parameter1Hi = new EquipmentParameter {
                        Url = "1Hi"
                    };
                    var parameter1Low = new EquipmentParameter {
                        Url = "1Low"
                    };
                    var parameter1Status = new EquipmentParameter {
                        Url = "1Status"
                    };
                    var parameter2Hi = new EquipmentParameter {
                        Url = "2Hi"
                    };
                    var parameter2Low = new EquipmentParameter {
                        Url = "2Low"
                    };
                    var parameter2Status = new EquipmentParameter {
                        Url = "2Status"
                    };
                    var parameter3Hi = new EquipmentParameter {
                        Url = "3Hi"
                    };
                    var parameter3Low = new EquipmentParameter {
                        Url = "3Low"
                    };
                    var parameter3Status = new EquipmentParameter {
                        Url = "3Status"
                    };

                    var technicalProcess1 = new TechnicalProcess
                    {
                        Equipment         = equipment1,
                        RunIdHiParameter  = parameter1Hi,
                        RunIdLowParameter = parameter1Low,
                        StatusParameter   = parameter1Status,
                    };
                    var technicalProcess2 = new TechnicalProcess
                    {
                        Equipment         = equipment2,
                        RunIdHiParameter  = parameter2Hi,
                        RunIdLowParameter = parameter2Low,
                        StatusParameter   = parameter2Status,
                    };
                    var technicalProcess3 = new TechnicalProcess
                    {
                        Equipment         = equipment3,
                        RunIdHiParameter  = parameter3Hi,
                        RunIdLowParameter = parameter3Low,
                        StatusParameter   = parameter3Status,
                    };

                    var equipments = new[] { equipment1, equipment2 };

                    var technicalProcesses = Query.All <TechnicalProcess>()
                                             .Where(tp => tp.Equipment.In(equipments)).ToArray();

                    Assert.AreEqual(2, technicalProcesses.Length);
                }
        }
        public void OnlyJoinOperationTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction())
                {
                    var equipment1 = new Equipment();
                    var equipment2 = new Equipment();
                    var equipment3 = new Equipment();

                    var parameter1Hi = new EquipmentParameter {
                        Url = "1Hi"
                    };
                    var parameter1Low = new EquipmentParameter {
                        Url = "1Low"
                    };
                    var parameter1Status = new EquipmentParameter {
                        Url = "1Status"
                    };
                    var parameter2Hi = new EquipmentParameter {
                        Url = "2Hi"
                    };
                    var parameter2Low = new EquipmentParameter {
                        Url = "2Low"
                    };
                    var parameter2Status = new EquipmentParameter {
                        Url = "2Status"
                    };
                    var parameter3Hi = new EquipmentParameter {
                        Url = "3Hi"
                    };
                    var parameter3Low = new EquipmentParameter {
                        Url = "3Low"
                    };
                    var parameter3Status = new EquipmentParameter {
                        Url = "3Status"
                    };

                    var technicalProcess1 = new TechnicalProcess
                    {
                        Equipment         = equipment1,
                        RunIdHiParameter  = parameter1Hi,
                        RunIdLowParameter = parameter1Low,
                        StatusParameter   = parameter1Status,
                    };
                    var technicalProcess2 = new TechnicalProcess
                    {
                        Equipment         = equipment2,
                        RunIdHiParameter  = parameter2Hi,
                        RunIdLowParameter = parameter2Low,
                        StatusParameter   = parameter2Status,
                    };
                    var technicalProcess3 = new TechnicalProcess
                    {
                        Equipment         = equipment3,
                        RunIdHiParameter  = parameter3Hi,
                        RunIdLowParameter = parameter3Low,
                        StatusParameter   = parameter3Status,
                    };

                    var urls = session.Query.All <TechnicalProcess>()
                               .Select(p => p.RunIdHiParameter.Url)
                               .Concat(session.Query.All <TechnicalProcess>().Select(p => p.RunIdLowParameter.Url))
                               .Concat(session.Query.All <TechnicalProcess>().Select(p => p.StatusParameter.Url))
                               .ToArray();

                    Assert.AreEqual(9, urls.Length);
                }
        }
        public void MainTest()
        {
            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var equipment1 = new Equipment();
                    var equipment2 = new Equipment();
                    var equipment3 = new Equipment();

                    var parameter1Hi = new EquipmentParameter {
                        Url = "1Hi"
                    };
                    var parameter1Low = new EquipmentParameter {
                        Url = "1Low"
                    };
                    var parameter1Status = new EquipmentParameter {
                        Url = "1Status"
                    };
                    var parameter2Hi = new EquipmentParameter {
                        Url = "2Hi"
                    };
                    var parameter2Low = new EquipmentParameter {
                        Url = "2Low"
                    };
                    var parameter2Status = new EquipmentParameter {
                        Url = "2Status"
                    };
                    var parameter3Hi = new EquipmentParameter {
                        Url = "3Hi"
                    };
                    var parameter3Low = new EquipmentParameter {
                        Url = "3Low"
                    };
                    var parameter3Status = new EquipmentParameter {
                        Url = "3Status"
                    };

                    var technicalProcess1 = new TechnicalProcess {
                        Equipment         = equipment1,
                        RunIdHiParameter  = parameter1Hi,
                        RunIdLowParameter = parameter1Low,
                        StatusParameter   = parameter1Status,
                    };
                    var technicalProcess2 = new TechnicalProcess {
                        Equipment         = equipment2,
                        RunIdHiParameter  = parameter2Hi,
                        RunIdLowParameter = parameter2Low,
                        StatusParameter   = parameter2Status,
                    };
                    var technicalProcess3 = new TechnicalProcess {
                        Equipment         = equipment3,
                        RunIdHiParameter  = parameter3Hi,
                        RunIdLowParameter = parameter3Low,
                        StatusParameter   = parameter3Status,
                    };

                    var equipments = new[] { equipment1, equipment2 };

                    var technicalProcesses = Query.All <TechnicalProcess>()
                                             .Where(tp => tp.Equipment.In(equipments));


                    var urls = technicalProcesses.Select(p => p.RunIdHiParameter.Url)
                               .Concat(technicalProcesses.Select(p => p.RunIdLowParameter.Url))
                               .Concat(technicalProcesses.Select(p => p.StatusParameter.Url))
                               .ToArray();

                    Assert.That(urls.Length, Is.EqualTo(6));
                    Assert.That(urls.Contains("1Hi"));
                    Assert.That(urls.Contains("1Low"));
                    Assert.That(urls.Contains("1Status"));
                    Assert.That(urls.Contains("2Hi"));
                    Assert.That(urls.Contains("2Low"));
                    Assert.That(urls.Contains("2Status"));
                }
        }