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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
/// <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); }
/// <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; }