Как: вызывать определяемые моделью функции в запросах - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь сделать следующее: http://msdn.microsoft.com/en-us/library/dd456857.aspx

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

<Function Name="YearsSince" ReturnType="Edm.Int32">
  <Parameter Name="date" Type="Edm.DateTime" />
  <DefiningExpression>
    Year(CurrentDateTime()) - Year(AppliedDate)
  </DefiningExpression>
</Function>
      </Schema>

Теперь я хочу бытьвозможность использовать это в запросе.Я создал следующий код в частичном классе ApplicantPosition

[EdmFunction("HRModel", "YearsSince")]
        public static int YearsSince(DateTime date)
        {
            throw new NotSupportedException("Direct calls are not supported.");
        }

И я пытаюсь выполнить следующий запрос

public class Class1
{

    public void question()
    {
        using (HREntities context = new HREntities())
        {
            // Retrieve instructors hired more than 10 years ago.
            var applicantPositions = from p in context.ApplicantPositions
                              where YearsSince((DateTime)p.AppliedDate) > 10
                              select p;

            foreach (var applicantPosition in applicantPositions)
            {
                Console.WriteLine(applicantPosition.);
            }
        }

    }
}

YearsSince не распознан, учебник по MSDN не отображается точногде я должен поставить функцию, так что это может быть моей проблемой.

1 Ответ

2 голосов
/ 02 ноября 2011

Ваша статическая YearsSince функция должна быть определена в некотором классе, поэтому, если это не Class1, вы должны использовать полную идентификацию с именем класса, чтобы вызвать ее.Проверьте также этот ответ .

...