Я работаю над приложением, которое обращается к данным из базы данных Oracle 11g. Я использую EF4, а доступ к данным осуществляется с помощью LINQ. I have come across a scenario where I need to call a function stored in a package. This function also has a return value. I have added this function to the entity data model but am unable to perform "Add Function Import" on it. Hence I'm unable to access it using LINQ. Как я могу вызвать эту функцию и получить ее возвращаемое значение?
Я задал этот вопрос некоторое время назад, но пока не получил на него ответа. В любом случае, я обновляю его некоторыми деталями, чтобы другим было удобно понять проблему и направить меня в правильном направлении. Я попытался реализовать решение, предложенное в этом вопросе , но получаю исключение.
Я добавил следующее в файл designer.cs моей модели данных объекта:
[EdmFunction("TestModel.Store", "TestFunction")]
public int TestFunction(decimal ALNR, decimal ATID, decimal AUKENR)
{
throw new ApplicationException();
}
Ниже приводится небольшая часть файла edmx:
Вот как я вызываю эту функцию:
var selectQuery = from T in _context.Table1
join A in _context.Table2 on T.columnA equals A.columnB
join TU in _context.Table3 on T.columnC equals TU.columnD
where T.columnD == 5 && T.columnE == someVariable
select new someType
{
propertyA = A.columnG,
propertyB = _context.TestFunction(T.columnE, A.columnF, TU.columnH)
};
Но когда я выполняю любое из следующих действий:
ObservableCollection weekTotaldata = new ObservableCollection(selectQuery); //Exception thrown at runtime
или
foreach (var ttu in selectQuery) //Exception thrown at runtime
{
double testval = ttu.propertyB;
}
, я получаю исключение, которое генерируется этой функцией ApplicationException. Разве это не должно исключение будет выдано, когда эта функция вызывается где-либо еще, за исключением запроса L2E?
Что я делаю не так? Как я могу вызвать функцию оракула из Linq-To-Entities? Обратите внимание, что функция, которую я пытаюсь вызвать, не является встроенной функцией оракула, а является определяемой пользователем функцией.