У меня есть следующая функция, определенная в CSDL моего EDMX.
<Function Name="GetSprintDuration" ReturnType="Edm.Decimal">
<Parameter Name="sprintId" Type="Edm.Int32" />
<DefiningExpression>
SUM( SELECT VALUE h.Duration
FROM ApplicationEntities.Hours as h
WHERE h.Story.Project.SprintId = sprintId)
</DefiningExpression>
</Function>
Мой код для доступа к функции выглядит следующим образом:
[EdmFunction("ApplicationModel", "GetSprintDuration")]
public decimal? GetSprintDuration(int sprintId)
{
return this.QueryProvider.Execute<decimal?>(Expression.Call(
Expression.Constant(this),
(MethodInfo)MethodInfo.GetCurrentMethod(),
Expression.Constant(sprintId, typeof(int))));
}
Когда я вызываю этот метод, я получаюследующая ошибка:
«SprintId» не является членом типа «ApplicationModel.Project» в загруженных в настоящий момент схемах.
Ошибка генерируется, когда QueryProvider.Execute вызывается:
Line 17: public decimal? GetSprintDuration(int sprintId)
Line 18: {
Line 19: return this.QueryProvider.Execute<decimal?>(Expression.Call(
Line 20: Expression.Constant(this),
Line 21: (MethodInfo)MethodInfo.GetCurrentMethod(),
Если я изменю функцию на что-то вроде:
<Function Name="GetSprintDuration" ReturnType="Edm.Decimal">
<Parameter Name="sprintId" Type="Edm.Int32" />
<DefiningExpression>
SUM( SELECT VALUE h.Duration
FROM ApplicationEntities.Hours as h
WHERE h.HourId != 0)
</DefiningExpression>
</Function>
Мое приложение работает как обычно ... по какой-то причине у меня нет доступа кполная модель сущности.Есть ли способ сделать так, чтобы я мог получить доступ к полной модели сущности ИЛИ это невозможно?
Заранее спасибо!