Метод не выполняется, если логический параметр имеет значение false

Я изолировал проблему в следующих строках кода в методе спецификации, который вызывает хранимую процедуру:

        if ((includeAgeSeventeenAndUnder == CodeFluentPersistence.DefaultBooleanValue))
        {
            return null;
        }
        if ((includeAgeEighteenAndOver == CodeFluentPersistence.DefaultBooleanValue))
        {
            return null;
        }

Поскольку CodeFluentPersistence.DefaultBooleanValue равно False. Каждый раз, когда методу передается параметр false, метод завершает работу и возвращает значение null. Как я могу предотвратить это?


person Dave    schedule 03.12.2015    source источник
comment
для чего установлены includeAgeSeventeenAndUnder и includeAgeEighteenAndOver?   -  person Will Evers    schedule 03.12.2015
comment
Вы можете добавить cfom:checkDefaultValue="false" на уровне параметра, чтобы удалить проверку в спецификации.   -  person meziantou    schedule 04.12.2015
comment
@meziantou - Ваш подход лучший. Я добавил это к своему ответу.   -  person Dave    schedule 09.12.2015
comment
@Will Evers - я работаю в некоммерческой организации, и этот метод используется для отчета, необходимого для одного из наших грантов. Большую часть данных в отчете необходимо разбить по возрастам. Когда мне нужно получить данные для раздела отчета для детей 17 лет и младше, я устанавливаю для includeAgeSeventeenAndUnder значение true, а для includeAgeEighteenAndOver — значение false. Когда мне нужны данные для 18 лет и старше, я делаю наоборот.   -  person Dave    schedule 09.12.2015


Ответы (1)


Я заработал, установив для modeNullable значение true.

<cf:method name="Load">
  <cf:body text="LOADONE(date  startDate, date endDate, bool includeAgeSeventeenAndUnder, bool includeAgeEighteenAndOver,int sisProgramId) RAW  " rawText="This has been deleted because it is not relevent to question" language="tsql" />
  <cf:parameter typeName="bool" name="includeAgeSeventeenAndUnder" modelNullable="True" />
  <cf:parameter typeName="bool" name="includeAgeEighteenAndOver" modelNullable="True" />
</cf:method>

Предложение Meziantou на самом деле предпочтительнее, поскольку я действительно не хочу, чтобы параметры обнулялись. Нижеприведенный фрагмент демонстрирует правильный способ отключения проверки значения по умолчанию.

<cf:method name="Load">
  <cf:body text="LOADONE(date  startDate, date endDate, bool includeAgeSeventeenAndUnder, bool includeAgeEighteenAndOver,int sisProgramId) RAW  " rawText="This has been deleted because it is not relevent to question" language="tsql" />
  <cf:parameter typeName="bool" cfom:checkDefaultValue="false" name="includeAgeSeventeenAndUnder" modelNullable="False" />
  <cf:parameter typeName="bool" cfom:checkDefaultValue="false" name="includeAgeEighteenAndOver" modelNullable="False" />
</cf:method>
person Dave    schedule 03.12.2015