0

I am trying to do the following: http://msdn.microsoft.com/en-us/library/dd456857.aspx

I created the function in the edmx file here just before the schema element:

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

Now, I want to be able to use that in a query. I created the following code in the ApplicantPosition partial class

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

And I am trying to do the following query

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

    }
}

The YearsSince is not recognized, the MSDN tutorial does not show exactly where I need to put the functio, so that might be my problem.

Ladislav Mrnka
  • 360,892
  • 59
  • 660
  • 670
Luis Valencia
  • 32,619
  • 93
  • 286
  • 506

1 Answers1

1

Your static YearsSince function must be defined in some class so if it is not Class1 you must use full identification with class name to call it. Check also this answer.

Community
  • 1
  • 1
Ladislav Mrnka
  • 360,892
  • 59
  • 660
  • 670