140 likes | 286 Views
Опит в използването на ODP.NET с Oracle 9i. Лектор: Иван Симеонов ТехноЛогика ЕООД. Какво е Oracle Data Provider for .NET (ODP.NET). ASP.NET. VB.NET. C#. C++.NET. OLE DB .NET. ODBC .NET. ODP .NET. ORACLE OLE DB. ORACLE ODBC. ORACLE DB. ODP.NET Обектен модел. Disconnected
E N D
Опит в използването на ODP.NET с Oracle 9i Лектор: Иван Симеонов ТехноЛогика ЕООД
Какво е Oracle Data Provider for .NET (ODP.NET) ASP.NET VB.NET C# C++.NET OLE DB .NET ODBC .NET ODP .NET ORACLE OLE DB ORACLE ODBC ORACLE DB
ODP.NET Обектен модел Disconnected Layer Connected Layer (ODP.NET) Data Layer Oracle DataAdapter OracleCommand Builder DataSet Oracle DataReader Oracle Command Business Object Oracle Transaction Oracle Connection Oracle
Full PL/SQL support Packaged, non-packaged, anonymous, autonomous Batch SQL available with anonymous PL/SQL Native Oracle data types LOBs, REF Cursor, Date, TimeStamps, Long, Raw, etc. Connection pooling Min, Max, Timeout, Lifetime, Increment, Decrement Transactions Enterprise Services via Oracle Services for MTS Savepoints Globalization Full Unicode support Client settings are used to display Oracle data in locale-specific manner Transparent application failover Notification callbacks Основни характеристики на ODP.NET
Parameters PL/SQL Associative Array data type Parameter Array binding Named and positional parameters XML DB XML repository Native XMLType XML stored as CLOB or object Schema and non-schema-based XML Views Основни характеристики на ODP.NET - продължение
Oсновни предимства на ODP.NET • Multiple Active Result Sets (MARS) • Native XML Data Type • Result Set Retrieval Tuning Options • Configurable LOB Retrieval • Array Parameters
Oracle Helper • ExecuteDataSet – 6 overloads • ExecuteFunction – 9 overloads • ExecuteReader – 6 overloads • ExecuteScalar – 6 overloads • ExecuteNonQuery – 6 overloads • ExecuteXMLReader – 6 overloads
Проблеми с ODP.NET • Липсва DeriveParameters за PL/SQL процедури • PLSQL Associative Arrays без стойност на елемент • Не поддържа varray като параметър • ExecuteScalar не работи с PL/SQL Functions без RefCursor • Разлика в типовете данни
Добри практики при използването на ODP.NET • Използвайте connection pooling • Отстранявайте ODP.NET обектите, когато приключите работа • Минимизирайте roundtrips • Оптимизиране на single statement (SELECT) • Използвайте FetchSize (OracleDataReader) и RowSize (OracleCommand) • Използвайте DataAdapter.Requery • Намалява roundtrips при повторно изпълнение на команда
Добри практики при използването на ODP.NET - продължение • Оптимизиране на multi-statement • Изпълнявате много и различни команди? • Използвайте anonymous PL/SQL • Използвайте групови команди • Изпълнявате една команда много пъти? • Използвайте parameter array binding • Използвайте PL/SQL associative arrays
Добри практики при използването на ODP.NET - продължение • Използвайте OracleRefCursor class • Данните се извличат, когато е необходимо • Използвайте Oracle LOB classes (DML) • Няма необходимост да изтегляте данните за да променяте или добавяте LOBs • Желаетеданните в LOB на един път? • Използвайте InitialLOBFetchSize, за да оптимизиратеизвличането на LOB • Желаете да извлечете LOB по-късно? • По подразбиране, ODP.NET използва LOB locators
Добри практики при използването на ODP.NET - продължение • Използвайте PL/SQL пакети • Управлявайте транзакциите от .NET • Когато е възможно, използвайте multiple RefCursors • Използвайте собствен error handling (Exceptions.ApplicationBlock) • …
Други .NET Providers за Oracle • Microsoft .NET Data Provider for Oracle • Corelab OraDirect .NET Data Provider • DataDirect Connect for .NET
Кой .NET Provider да използваме • За малки приложения и бърза разработка – MS Data Provider for Oracle • За пълно използване на възможностите на OracleDB и висока производителност – ODP.NET http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnadonet/html/ODPvsMSDP.asp