Entity Framework и Oracle

6yrop

Я правильно понимаю, что использование хранимых процедур с REF CURSOR совершенно не юзабильно через EF?
http://docs.oracle.com/cd/E48297_01/doc/win.121/e41125/featI...
http://download.oracle.com/oll/obe/EntityFrameworkOBE/Entity...
Прописывать вот такое в конфиге, это же убиться об стену
 
 
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursor.NEW_SALARY" value="implicitRefCursor bindinfo='mode=Output'" />
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.0" value="implicitRefCursor metadata='ColumnName=FIRST_NAME;BaseColumnName=FIRST_NAME;BaseSchemaName=HR;BaseTableName=EMPLOYEES;NATIVEDATATYPE=Varchar2;ProviderType=Varchar2'" />
<add name="HR.UPDATE_AND_RETURN_SALARY.RefCursorMetaData.NEW_SALARY.Column.1" value="implicitRefCursor metadata='ColumnName=SALARY;NATIVEDATATYPE=Number;ProviderType=Int32'" />

Aggressiv

Не претендую на адекватность, просто оставлю тут ссылку http://nhforge.org/, для разнообразия. Вдруг когда-нибудь пригодится.

6yrop

Не претендую на адекватность, просто оставлю тут ссылку http://nhforge.org/, для разнообразия. Вдруг когда-нибудь пригодится.
Тк проблема в самом Oracle, он не предоставляет информации о том, какие столбцы у результата вот таких процедур, см. ниже. Какие столбцы у курсора NEW_SALARY? Об этом может сказать только Oracle. Во внешней библиотеке вряд ли кто-нибудь реализует парсинг ораклового SQL.
 
 
CREATE PROCEDURE "UPDATE_AND_RETURN_SALARY" (
"ID" IN NUMBER,
"SAL" IN NUMBER,
"NEW_SALARY" OUT SYS_REFCURSOR) IS

BEGIN -- Update the employee's salary and return new employee name and salary value

UPDATE EMPLOYEES E SET E.SALARY = SAL WHERE E.EMPLOYEE_ID = ID;
OPEN NEW_SALARY FOR SELECT FIRST_NAME, SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = ID;

END;

P.S. Ах чуть не забыл. Хибернейт — это самое говнистое говно из мира Java.

Aggressiv

1. Зачем в твоем примере курсор? Или это искуственный пример?
2. Любое говно из любого мира - "на вкус и цвет".

mbolik1

Используй современные версии, 12c Data Sheet:
Enhanced Implicit REF Cursor Binding
o Retrieves stored procedure result sets implicitly without a
declared return type, except in the case of Entity Framework and
user-defined types.

6yrop

Используй современные версии
Ты о чем? В первой моей ссылке 12c Release 1
except in the case of Entity Framework
ты читать не умеешь?
Кстати, любовь оракла к pdf-ам тоже умиляет, корпоративненько. Я читал более развернутую версию:
 

Enhanced Implicit REF Cursor Binding
In Oracle Database 12c Release 1 (12.1 ODP.NET 12c can retrieve the results of a SELECT statement run in PL/SQL without an explicit target nor REF CURSOR data type. ODP.NET retrieves result sets from stored procedures implicitly without declaring a return type. It is no longer necessary to declare REF CURSOR metadata in a .NET configuration file, except when using Entity Framework or user-defined types.
http://docs.oracle.com/cd/E16655_01/win.121/e17732/release_c...
 

6yrop

1. Зачем в твоем примере курсор? Или это искуственный пример?
это код из их же примера
http://download.oracle.com/oll/obe/EntityFrameworkOBE/Entity...
Оставить комментарий
Имя или ник:
Комментарий: