public void GetLcsTestNullableIntWithNull2()
        {
            // Данный код просто показывает, что классическое linq возвращает, сравнивая int с null, при этом не падая.
            var someList = new List <int?>()
            {
                1, 2, 3, null
            };
            int?nullableInt = null;
            var result      = someList.Where(x => x > nullableInt).ToList();

            Assert.Equal(0, result.Count);

            // Далее наш linqprovider.
            var testProvider = new TestLcsQueryProvider <Лапа>();

            new Query <Лапа>(testProvider).Where(x => x.азмерNullableInt > nullableInt).ToList();
            Expression queryExpression        = testProvider.InnerExpression;
            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Лапа)));

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = ldef.GetFunction(ldef.funcNOT, this.ldef.GetFunction(this.ldef.paramTrue))
            };

            Assert.True(Equals(expected, actual));
        }
        public void GetLcsTestFilterNullableTypes()
        {
            IQueryable <FullTypesMainAgregator> queryList = new List <FullTypesMainAgregator>().AsQueryable();

            IQueryable <FullTypesMainAgregator> query1 = queryList.Where(x => x.PoleNullableDateTime.Value.Day == DateTime.Now.Day);

            var expected1 = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    ldef.GetFunction(
                        ldef.funcEQ,
                        ldef.GetFunction(ldef.funcDayPart, new VariableDef(ldef.DateTimeType, "PoleNullableDateTime")),
                        ldef.GetFunction(ldef.funcDayPart, ldef.GetFunction(ldef.paramTODAY)))
            };

            LoadingCustomizationStruct actual1 = LinqToLcs.GetLcs(query1.Expression, FullTypesMainAgregator.Views.FullView);

            Assert.True(Equals(expected1, actual1));

            IQueryable <FullTypesMainAgregator> query2 = queryList.Where(x => x.PoleNullDateTime.Value.Day == DateTime.Now.Day);

            var expected2 = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    ldef.GetFunction(
                        ldef.funcEQ,
                        ldef.GetFunction(ldef.funcDayPart, new VariableDef(ldef.DateTimeType, "PoleNullDateTime")),
                        ldef.GetFunction(ldef.funcDayPart, ldef.GetFunction(ldef.paramTODAY)))
            };

            LoadingCustomizationStruct actual2 = LinqToLcs.GetLcs(query2.Expression, FullTypesMainAgregator.Views.FullView);

            Assert.True(Equals(expected2, actual2));
        }
        public void TestODataIifContainsNullableWithoutRightConvert()
        {
            // Arrange.
            var testProvider = new TestLcsQueryProvider <FullTypesMainAgregator>();
            var rightValue   = (bool?)true;

            new Query <FullTypesMainAgregator>(testProvider)
            .Where(o => (o.PoleString == null ? null : (bool?)o.PoleString.Contains("test")) == rightValue)
            .ToArray();
            Expression queryExpression = testProvider.InnerExpression;
            var        expected        = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    this.ldef.GetFunction(
                        this.ldef.funcLike,
                        new VariableDef(this.ldef.StringType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleString)),
                        "%test%")
            };

            // Act.
            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, FullTypesMainAgregator.Views.FullView);

            // Assert.
            Assert.True(Equals(expected, actual));
        }
        public void GetLcsTestSortByUserNullableTypes()
        {
            IQueryable <FullTypesMainAgregator> queryList = new List <FullTypesMainAgregator>().AsQueryable();
            IQueryable <FullTypesMainAgregator> query     = queryList
                                                            .OrderByDescending(x => x.PoleNullableDateTime == null ? null : (UserDataTypes.NullableDateTime)x.PoleNullableDateTime.Value)
                                                            .OrderBy(x => x.PoleNullableInt == null ? null : (UserDataTypes.NullableInt)x.PoleNullableInt.Value)
                                                            .OrderBy(x => x.PoleNullableDecimal == null ? null : (UserDataTypes.NullableDecimal)x.PoleNullableDecimal.Value)
                                                            .OrderBy(x => (x.FullTypesMaster1 == null ? null : x.FullTypesMaster1.PoleNullableDateTime) == null ? null : (UserDataTypes.NullableDateTime)x.FullTypesMaster1.PoleNullableDateTime.Value)
                                                            .OrderBy(x => x.FullTypesMaster1 == null ? null : x.FullTypesMaster1.PoleNullableInt == null ? null : (UserDataTypes.NullableInt)x.FullTypesMaster1.PoleNullableInt.Value);

            var expected = new LoadingCustomizationStruct(null)
            {
                ColumnsSort = new[]
                {
                    new ColumnsSortDef(Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleNullableDateTime), SortOrder.Desc),
                    new ColumnsSortDef(Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleNullableInt), SortOrder.Asc),
                    new ColumnsSortDef(Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleNullableDecimal), SortOrder.Asc),
                    new ColumnsSortDef(Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.FullTypesMaster1.PoleNullableDateTime), SortOrder.Asc),
                    new ColumnsSortDef(Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.FullTypesMaster1.PoleNullableInt), SortOrder.Asc),
                },
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(query.Expression, FullTypesMainAgregator.Views.FullView);

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 5
0
        public void GetLcsTestSortMasterField()
        {
            IQueryable <Кошка>        queryList = new List <Кошка>().AsQueryable();
            IOrderedQueryable <Кошка> query     = from pn in queryList
                                                  orderby pn.Порода.Название ascending
                                                  select pn;
            Expression queryExpression = query.Expression;
            var        expected        = new LoadingCustomizationStruct(null)
            {
                ColumnsSort =
                    new[]
                {
                    new ColumnsSortDef(Information.ExtractPropertyPath <Кошка>(c => c.Порода.Название), SortOrder.Asc)
                }
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Кошка.Views.КошкаE);

            Assert.True(Equals(expected, actual));

            IQueryable <Кошка>         query2           = (from pn in queryList select pn).OrderBy(pn => pn.Порода == null ? null : pn.Порода.Название);
            Expression                 queryExpression2 = query2.Expression;
            LoadingCustomizationStruct actual2          = LinqToLcs.GetLcs(queryExpression2, Кошка.Views.КошкаE);

            Assert.True(Equals(expected, actual2));
        }
Ejemplo n.º 6
0
        public void GetLcsTestDetailAllWithLimit()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            // Только те кошки у которых переломаны все лапы
            new Query <Кошка>(testProvider).Where(o => o.Лапа.Cast <Лапа>().All(obj => obj.БылиЛиПереломы)).ToArray();
            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef
            {
                ConnectMasterPorp = "Кошка",
                OwnerConnectProp  = new[] { SQLWhereLanguageDef.StormMainObjectKey },
                View = Information.GetView("ЛапаE", typeof(Лапа)),
                Type = this.ldef.GetObjectType("Details")
            };

            var lf       = ldef.GetFunction(ldef.funcEQ, new VariableDef(ldef.BoolType, "БылиЛиПереломы"));
            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction("ExistExact", dvd, lf)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
        public void GetLcsByPseudoDetailLimitTestSimpleAnyWithCmp()
        {
            var testProvider = new TestLcsQueryProvider <Порода>();

            // Все породы, для которых определены кошки
            new Query <Порода>(testProvider).Where <Порода, Кошка>(
                Information.GetView("КошкаE", typeof(Кошка)),
                Information.ExtractPropertyPath <Кошка>(x => x.Порода),
                x => x.Any(),
                "SomeCmp").ToList();

            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef(
                this.ldef.GetObjectType("Details"),
                "SomeCmp",
                Information.GetView("КошкаE", typeof(Кошка)),
                "Порода",
                new[] { SQLWhereLanguageDef.StormMainObjectKey });

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction("Exist", dvd, ldef.GetFunction(ldef.paramTrue))
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Порода)));

            Assert.True(Equals(expected, actual));
        }
        public void GetLcsByDetailLimitTestSpecialVariant()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            // Все кошки с лапами
            new Query <Кошка>(testProvider).Where <Кошка, Лапа>(
                Information.GetView("ЛапаE", typeof(Лапа)),
                x => x.Any()).ToArray();

            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef(
                this.ldef.GetObjectType("Details"),
                "Лапа__Кошка",
                Information.GetView("ЛапаE", typeof(Лапа)),
                "Кошка",
                new[] { SQLWhereLanguageDef.StormMainObjectKey });

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction("Exist", dvd, ldef.GetFunction(ldef.paramTrue))
            };
            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 9
0
        public void GetLcsTestAny()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            // Все кошки с лапами
            new Query <Кошка>(testProvider).Where(o => o.Лапа.Cast <Лапа>().Any()).ToArray();
            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef
            {
                ConnectMasterPorp = "Кошка",
                OwnerConnectProp  = new[] { SQLWhereLanguageDef.StormMainObjectKey },
                View = Information.GetView("ЛапаE", typeof(Лапа)),
                Type = this.ldef.GetObjectType("Details")
            };

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction("Exist", dvd, true)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
        public void GetLcsByPseudoDetailLimitTestConditionAllWithCmp()
        {
            var testProvider = new TestLcsQueryProvider <Порода>();

            // Все породы, в которые входят только кошки, не носящие клички ни "Барсик", ни "Мурзик"
            new Query <Порода>(testProvider).Where <Порода, Кошка>(
                Information.GetView("КошкаE", typeof(Кошка)),
                Information.ExtractPropertyPath <Кошка>(x => x.Порода),
                y => y.All(x => x.Кличка != "Барсик" && x.Кличка != "Мурзик"),
                "SomeCmp").ToList();

            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef(
                this.ldef.GetObjectType("Details"),
                "SomeCmp",
                Information.GetView("КошкаE", typeof(Кошка)),
                "Порода",
                new[] { SQLWhereLanguageDef.StormMainObjectKey });

            var lf = ldef.GetFunction(
                ldef.funcAND,
                ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Барсик"),
                ldef.GetFunction(ldef.funcNEQ, new VariableDef(ldef.StringType, "Кличка"), "Мурзик"));

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction(ldef.funcExistExact, dvd, lf)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Порода)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 11
0
        public void GetLcsTestDetailAnyConjunction()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            new Query <Кошка>(testProvider).Where(x => x.Лапа.Cast <Лапа>().Any(o => o.Номер == 1 && o.Кошка.Кличка.Contains("кличка"))).ToList();
            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef
            {
                ConnectMasterPorp = "Кошка",
                OwnerConnectProp  = new[] { SQLWhereLanguageDef.StormMainObjectKey },
                View = Information.GetView("ЛапаE", typeof(Лапа)),
                Type = this.ldef.GetObjectType("Details")
            };

            var lf = ldef.GetFunction(
                ldef.funcAND,
                ldef.GetFunction(ldef.funcEQ, new VariableDef(ldef.NumericType, "Номер"), 1),
                ldef.GetFunction(ldef.funcLike, new VariableDef(ldef.StringType, "Кошка.Кличка"), "%кличка%"));
            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = this.ldef.GetFunction("Exist", dvd, lf)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
        public void TestEnumLinqToLcsWithoutVariable()
        {
            var exception = Xunit.Record.Exception(() =>
            {
                // Arrange.
                var testProvider = new TestLcsQueryProvider <FullTypesMainAgregator>();
                var predicate1   = (Expression <Func <FullTypesMainAgregator, bool> >)(o => o.PoleEnum == PoleEnum.Attribute1);
                new Query <FullTypesMainAgregator>(testProvider).Where(predicate1).ToArray();

                Expression queryExpression = testProvider.InnerExpression;
                var expected = new LoadingCustomizationStruct(null)
                {
                    LimitFunction =
                        ldef.GetFunction(
                            ldef.funcEQ,
                            new VariableDef(ldef.StringType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleEnum)),
                            EnumCaption.GetCaptionFor(PoleEnum.Attribute1))
                };

                // Act.
                // При компиляции в VS2013 или VS2015 ServicePack 1 данная строка вызовет NotSupportedException.
                LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, FullTypesMainAgregator.Views.FullView);

                // Assert.
                Assert.True(Equals(expected, actual));
            });

            Assert.IsType(typeof(NotSupportedException), exception);
        }
        public void TestEnumLinqToLcsWithVariable()
        {
            // Arrange.
            var      testProvider = new TestLcsQueryProvider <FullTypesMainAgregator>();
            PoleEnum poleEnum     = PoleEnum.Attribute1;
            var      predicate1   = (Expression <Func <FullTypesMainAgregator, bool> >)(o => o.PoleEnum == poleEnum);

            new Query <FullTypesMainAgregator>(testProvider).Where(predicate1).ToArray();

            Expression queryExpression = testProvider.InnerExpression;
            var        expected        = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    ldef.GetFunction(
                        ldef.funcEQ,
                        new VariableDef(ldef.StringType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleEnum)),
                        EnumCaption.GetCaptionFor(PoleEnum.Attribute1))
            };

            // Act.
            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, FullTypesMainAgregator.Views.FullView);

            // Assert.
            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 14
0
        public void GetLcsTestInListWithMethodCall()
        {
            var list = new List <string> {
                "гуид1", "гуид2"
            };

            IQueryable <Кошка> queryList       = new List <Кошка>().AsQueryable();
            IQueryable <Кошка> query           = from pn in queryList where list.Contains(pn.__PrimaryKey.ToString()) select pn;
            Expression         queryExpression = query.Expression;

            var queryCollection = new List <object> {
                new VariableDef(ldef.GuidType, SQLWhereLanguageDef.StormMainObjectKey)
            };

            queryCollection.AddRange(list);

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = ldef.GetFunction(ldef.funcIN, queryCollection.ToArray())
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 15
0
        public void GetLcsTestMasterSecondLevelPropertyInList()
        {
            var list = new List <string> {
                "ТипПороды1", "ТипПороды2"
            };

            IQueryable <Кошка> queryList       = new List <Кошка>().AsQueryable();
            IQueryable <Кошка> query           = queryList.Where(pn => list.Contains(pn.Порода.ТипПороды.Название));
            Expression         queryExpression = query.Expression;

            var queryCollection = new List <object> {
                new VariableDef(ldef.StringType, "Порода.ТипПороды.Название")
            };

            queryCollection.AddRange(list);

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = ldef.GetFunction(ldef.funcIN, queryCollection.ToArray())
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 16
0
        public void GetLcsTestMasterInList()
        {
            var list = new List <string> {
                "{pk1}", "{pk2}"
            };

            IQueryable <Кошка> queryList       = new List <Кошка>().AsQueryable();
            IQueryable <Кошка> query           = queryList.Where(pn => list.Contains(pn.Порода.__PrimaryKey.ToString()));
            Expression         queryExpression = query.Expression;

            var queryCollection = new List <object> {
                new VariableDef(ldef.GuidType, "Порода")
            };

            queryCollection.AddRange(list);

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = ldef.GetFunction(ldef.funcIN, queryCollection.ToArray())
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
        public void GetLcsTestAddYear()
        {
            DateTime now          = DateTime.Now;
            var      testProvider = new TestLcsQueryProvider <Перелом>();
            var      predicate    = (Expression <Func <Перелом, bool> >)(o => o.Дата.AddYears(1) < now.Date);

            new Query <Перелом>(testProvider).Where(predicate).ToArray();

            Expression queryExpression = testProvider.InnerExpression;

            var expectedLf = ldef.GetFunction(
                ldef.funcL,
                ldef.GetFunction(
                    ldef.funcDateAdd,
                    ldef.GetFunction(ldef.paramYearDIFF),
                    1,
                    new VariableDef(ldef.DateTimeType, "Дата")),
                ldef.GetFunction(ldef.funcOnlyDate, now));

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = expectedLf
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(
                queryExpression, Utils.GetDefaultView(typeof(Перелом)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 18
0
        public void GetLcsTestDetailWithCustomOwnerConnectProp()
        {
            var testProvider = new TestLcsQueryProvider <Котенок>();

            new Query <Котенок>(testProvider).Where(
                x => x.Кошка.Лапа.Cast <Лапа>().Any(o => o.ТипЛапы.Название == "передняя")).ToList();
            Expression queryExpression = testProvider.InnerExpression;

            var dvd = new DetailVariableDef
            {
                ConnectMasterPorp = "Кошка",
                OwnerConnectProp  = new[] { "Кошка" },
                View = Information.GetView("ЛапаE", typeof(Лапа)),
                Type = this.ldef.GetObjectType("Details")
            };

            var lf = ldef.GetFunction(ldef.funcEQ, new VariableDef(ldef.StringType, "ТипЛапы.Название"), "передняя");

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    this.ldef.GetFunction("Exist", dvd, lf)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(
                queryExpression, Utils.GetDefaultView(typeof(Котенок)), new[] { Utils.GetDefaultView(typeof(Кошка)) });

            Assert.True(Equals(expected, actual));

            // В сравнении Function DetailVariableDef не учитывается, поэтому проверим руками
            var expectedDvd = (DetailVariableDef)expected.LimitFunction.Parameters[0];
            var actualDvd   = (DetailVariableDef)actual.LimitFunction.Parameters[0];

            Assert.True(Equals(expectedDvd.OwnerConnectProp[0], actualDvd.OwnerConnectProp[0]));
        }
        public void GetLcsTestDateField()
        {
            DateTime now          = DateTime.Now;
            var      testProvider = new TestLcsQueryProvider <DateField>();
            var      predicate    = (Expression <Func <DateField, bool> >)(o => o.Date.Date < now.Date);

            new Query <DateField>(testProvider).Where(predicate).ToArray();

            Expression queryExpression = testProvider.InnerExpression;

            var expectedLf = ldef.GetFunction(
                ldef.funcL,
                ldef.GetFunction(
                    ldef.funcOnlyDate,
                    new VariableDef(ldef.DateTimeType, "Date")),
                ldef.GetFunction(ldef.funcOnlyDate, now));

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction = expectedLf
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(
                queryExpression, DateField.Views.DateFieldE);

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных.
        /// </summary>
        protected override void PreApplyToControls()
        {
            var ds          = (SQLDataService)DataServiceProvider.DataService;
            var actualOwner = ds.Query <Личность>(Личность.Views.ЛичностьL).Where(k => k.Актуально);

            ctrlВладелецМашины.LimitFunction = LinqToLcs.GetLcs(actualOwner.Expression, Личность.Views.ЛичностьL).LimitFunction;
        }
        public void LoadingObjectLoadObjectsTest()
        {
            // TODO: Обработать после выполнения задачи 4009

            var dataService = new MSSQLDataService();

            dataService.CustomizationString = ConfigurationManager.ConnectionStrings["TestAppNormal"]
                                              .ConnectionString;

            // Создание тестовой записи.
            var тестовыйМедведь = new Медведь()
            {
                ПорядковыйНомер = 15, Вес = 39
            };

            dataService.UpdateObject(тестовыйМедведь);

            var view = new View {
                DefineClassType = typeof(Медведь)
            };

            view.AddProperties(
                new string[1]
            {
                "ВычислимоеПоле"
            });

            // Загрузка объектов.
            IQueryable <Медведь> dataМедведи =
                dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey);


            var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view);

            lcs.View         = view;
            lcs.LoadingTypes = new[] { typeof(Медведь) };
            lcs.ReturnType   = LcsReturnType.Objects;

            // Загрузка данных без создания объктов.
            var медведи = dataService.LoadObjects(lcs);

            Assert.True(1 == медведи.Length, "Запись должна быть одна.");
            foreach (var stringDataView in медведи)
            {
                int fieldSum = ((Медведь)stringDataView).ВычислимоеПоле;
                Assert.True(54 == fieldSum, "ВычислимоеПоле");
            }

            Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна.");
            foreach (var медведь in dataМедведи)
            {
                Assert.True(1 == медведь.ВычислимоеПоле, "ВычислимоеПоле");
            }

            // Удаление тестовой записи.
            тестовыйМедведь.SetStatus(ObjectStatus.Deleted);
            dataService.UpdateObject(тестовыйМедведь);
        }
        public void LoadingObjectLoadStringedObjectViewTest()
        {
            // TODO: Обработать после выполнения задачи 4009

            var dataService = new MSSQLDataService();

            dataService.CustomizationString = "SERVER=rtc-storm;Trusted_connection=yes;DATABASE=dochitka_test;";

            // Cоздание тестовой записи.
            var тестовыйМедведь = new Медведь()
            {
                ПорядковыйНомер = 15, Вес = 39
            };

            dataService.UpdateObject(тестовыйМедведь);

            var view = new View {
                DefineClassType = typeof(Медведь)
            };

            view.AddProperties(
                new string[1]
            {
                "ВычислимоеПоле"
            });

            // Загрузка объектов.
            IQueryable <Медведь> dataМедведи =
                dataService.Query <Медведь>(view).Where(w => w.__PrimaryKey == тестовыйМедведь.__PrimaryKey);


            var lcs = LinqToLcs.GetLcs(dataМедведи.Expression, view);

            lcs.View         = view;
            lcs.LoadingTypes = new[] { typeof(Медведь) };
            lcs.ReturnType   = LcsReturnType.Objects;

            // Загрузка данных без создания объктов.
            var медведи = dataService.LoadStringedObjectView('\t', lcs);

            Assert.True(1 == медведи.Length, "Запись должна быть одна.");
            foreach (var stringDataView in медведи)
            {
                int fieldSum = Int32.Parse(stringDataView.ObjectedData[0].ToString());
                Assert.True(54 == fieldSum, "ВычислимоеПоле");
            }

            Assert.True(1 == dataМедведи.Count(), "Запись должна быть одна.");
            foreach (var медведь in dataМедведи)
            {
                Assert.True(54 == медведь.ВычислимоеПоле, "ВычислимоеПоле");
            }

            // Удаление тестовой записи.
            тестовыйМедведь.SetStatus(ObjectStatus.Deleted);
            dataService.UpdateObject(тестовыйМедведь);
        }
        /// <summary>
        /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных.
        /// </summary>
        protected override void PreApplyToControls()
        {
            var ds     = (SQLDataService)DataServiceProvider.DataService;
            var emp    = ds.Query <Employee>(Employee.Views.EmployeeL);
            var chiefs = from e in emp
                         where (e.male && !e.spouse) || !e.male
                         select e;

            ctrlEmployee.LimitFunction = LinqToLcs.GetLcs(chiefs.Expression, Employee.Views.EmployeeL).LimitFunction;
        }
        public void GetLcsTestStringEqualsWithDynamicView()
        {
            var query           = from pn in new List <Кошка>().AsQueryable() where pn.Кличка.Equals("Кошка") select pn;
            var queryExpression = query.Expression;
            var actual          = LinqToLcs.GetLcs(queryExpression, typeof(Кошка));

            Assert.NotNull(actual.View);
            Assert.Equal(1, actual.View.Properties.Count());
            Assert.Equal(Information.ExtractPropertyPath <Кошка>(x => x.Кличка), actual.View.Properties[0].Name);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Здесь лучше всего писать бизнес-логику, оперируя только объектом данных.
        /// </summary>
        protected override void PreApplyToControls()
        {
            // *** Start programmer edit section *** (Using statements)
            ctrlОрганизация.PropertyToShow = Information.ExtractPropertyPath <Организация>(t => t.Актуальность);
            var ds = (SQLDataService)DataServiceProvider.DataService;
            var actualOrganizations = ds.Query <Организация>(Организация.Views.ОрганизацияL).Where(t => t.Актуальность);

            ctrlОрганизация.LimitFunction =
                LinqToLcs.GetLcs(actualOrganizations.Expression, Организация.Views.ОрганизацияL).LimitFunction;
            // *** End programmer edit section *** (Using statements)
        }
        public void TestUseGuidPropertyWithDynamicView()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            new Query <Кошка>(testProvider).Where(o => o.Ключ == "{72FCA622-A01E-494C-BE1C-0821178594FB}").ToArray();
            var queryExpression = testProvider.InnerExpression;
            var actual          = LinqToLcs.GetLcs(queryExpression, typeof(Кошка));

            Assert.NotNull(actual.View);
            Assert.Equal(1, actual.View.Properties.Count());
            Assert.Equal(Information.ExtractPropertyPath <Кошка>(x => x.Ключ), actual.View.Properties[0].Name);
        }
        public void GetLcsTestBooleanVariableDefWithDynamicView()
        {
            var testProvider = new TestLcsQueryProvider <ТипЛапы>();

            new Query <ТипЛапы>(testProvider).Where(o => o.Актуально).ToList();
            var queryExpression = testProvider.InnerExpression;
            var actual          = LinqToLcs.GetLcs(queryExpression, typeof(ТипЛапы));

            Assert.NotNull(actual.View);
            Assert.Equal(1, actual.View.Properties.Count());
            Assert.Equal(Information.ExtractPropertyPath <ТипЛапы>(x => x.Актуально), actual.View.Properties[0].Name);
        }
        public void LcsDynamicViewTestForDetail()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            new Query <Кошка>(testProvider).Where(k => k.Лапа.Cast <Лапа>().Any(l => l.азмер > 5)).ToList();
            Expression queryExpression = testProvider.InnerExpression;

            var result = LinqToLcs.GetLcs <Кошка>(queryExpression);

            Assert.True(result.View.Details.Any(d => d.Name.Equals(ЛапаName)));
            Assert.True(result.View.GetDetail(ЛапаName).View.CheckPropname(азмерName));
        }
        public void LcsDynamicViewTestForSimpleFunction()
        {
            var testProvider = new TestLcsQueryProvider <Кошка>();

            new Query <Кошка>(testProvider).Where(k => k.Кличка == "кошка").ToList();
            Expression queryExpression = testProvider.InnerExpression;

            var result = LinqToLcs.GetLcs <Кошка>(queryExpression);

            // Проверка, что использованное свойство есть в представлении
            Assert.True(result.View.CheckPropname(КличкаName));
        }
        /// <summary>
        /// Вызывается самым первым в Page_Load.
        /// </summary>
        protected override void Preload()
        {
            ctrlEmployeeTake.MasterViewName = Employee.Views.EmployeeL.Name;

            // Забрать велосипед может только директор или менеджер.
            var ds       = DataServiceProvider.DataService;
            var queryEmp = ds.Query <Employee>(Employee.Views.EmployeeL.Name)
                           .Where(item => item.Position.Equals(Positions.Директор) || item.Position.Equals(Positions.Менеджер));

            ctrlEmployeeTake.LimitFunction = LinqToLcs.GetLcs(
                queryEmp.Expression, Employee.Views.EmployeeL).LimitFunction;
        }