Как выполнить скалярную пользовательскую функцию в EF - PullRequest
0 голосов
/ 23 марта 2012

Доступны ли скалярные udf для исполнения с EF?

Спасибо

1 Ответ

1 голос
/ 23 марта 2012

Да. Это поддерживается, вот краткий обзор того, как это сделать.

Измените свой EF SSDL:

<Function Name="AvgStudentGrade" ReturnType="decimal" Schema="dbo" >
  <Parameter Name="studentId" Mode="In" Type="int" />
</Function>

Добавьте заглушку метода с соответствующими атрибутами:

[EdmFunction("SchoolModel.Store", "AvgStudentGrade")]
public static decimal? AvgStudentGrade(int studentId)
{
    throw new NotSupportedException("Direct calls are not supported.");
}

Используйте это:

var students = from s in context.People
                   where s.EnrollmentDate != null
                   select new
                   {
                       name = s.LastName,
                       avgGrade = AvgStudentGrade(s.PersonID)
                   };

Дополнительная информация и полный образец по адресу:
http://msdn.microsoft.com/en-us/library/dd456847(VS.100).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...