123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- Oracle.ManagedDataAccess.EntityFramework Nuget Package Version 12.1.022 README
- ==============================================================================
- Release 12.1.0.2.2 for RDBMS 12.1.0.2 Bundle Patch 6 Production
- Release Notes: Oracle Data Provider for .NET, Managed Driver for Entity Framework
- June 2015
- Copyright (c) Oracle Corporation 2015
- This document provides information that supplements the Oracle Data Provider for .NET (ODP.NET) for Entity
- Framework documentation. You have downloaded Oracle Data Provider for .NET for Entity Framework from Oracle,
- the license agreement to which is available at
- http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
- TABLE OF CONTENTS
- *New Features
- *Installation and Configuration Steps
- *Installation Changes
- *Documentation Corrections and Additions
- *Entity Framework Tips, Limitations, and Known Issues
- Note: Please consult the ODP.NET, Managed Driver NuGet README at packages\Oracle.ManagedDataAccess.<version>
- for more information about the component.
- Note: The 32-bit "Oracle Developer Tools for Visual Studio" download from http://otn.oracle.com/dotnet is
- required for Entity Framework design-time features. This NuGet download does not enable design-time tools; it
- only provides run-time support. This version of ODP.NET for Entity Framework supports Oracle Database version
- 10.2 and higher.
- New Features since Oracle.ManagedDataAccess.EntityFramework Nuget Package Version 12.1.021
- ==========================================================================================
- None
- Installation and Configuration Steps
- ====================================
- The downloads are NuGet packages that can be installed with the NuGet Package Manager. These instructions apply
- to install ODP.NET, Managed Driver for Entity Framework.
- 1. Un-GAC any existing ODP.NET for Entity Framework 12.1.0.2 versions you have installed. For example, if you
- plan to use only the ODP.NET, Managed Driver for Entity Framework, only un-GAC existing managed ODP.NET for
- Entity Framework 12.1.0.2 versions then.
- 2. In Visual Studio 2012 or 2013, open NuGet Package Manager from an existing Visual Studio project.
- 3. Install the NuGet package from an OTN-downloaded local package source or from nuget.org.
- From Local Package Source
- -------------------------
- A. Click on the Settings button in the lower left of the dialog box.
- B. Click the "+" button to add a package source. In the Source field, enter in the directory location where the
- NuGet package(s) were downloaded to. Click the Update button, then the Ok button.
- C. On the left side, under the Online root node, select the package source you just created. The ODP.NET for
- Entity Framework NuGet package will appear.
- From Nuget.org
- --------------
- A. In the Search box in the upper right, search for the package with id,
- "Oracle.ManagedDataAccess.EntityFramework". Verify that the package uses this unique ID to ensure it is the
- offical Oracle Data Provider for .NET, Managed Driver for Entity Framework downloads.
- B. Select the package you wish to install.
- 4. Click on the Install button to select the desired NuGet package(s) to include with the project. Accept the
- license agreement and Visual Studio will continue the setup. ODP.NET, Managed Driver will be installed
- automatically as a dependency for ODP.NET, Managed Driver for Entity Framework.
- 5. Open the app/web.config file to configure the ODP.NET connection string and local naming parameters
- (i.e. tnsnames.ora). Below is an example of configuring the local naming parameters:
- <oracle.manageddataaccess.client>
- <version number="*">
- <dataSources>
- <!-- Customize these connection alias settings to connect to Oracle DB -->
- <dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
- </dataSources>
- </version>
- </oracle.manageddataaccess.client>
- 6. Modify the app/web.config file's connection string to create a DbContext your Entity Framework application
- will use. Below is an example of a configured DbContext.
- <connectionStrings>
- <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client"
- connectionString="User Id=hr;Password=hr;Data Source=MyDataSource"/>
- </connectionStrings>
- After following these instructions, ODP.NET, Managed Driver for Entity Framework is now configured and ready
- to use.
- NOTE: ODP.NET, Managed Driver may require its own configuration. Please consult the component's README
- at packages\Oracle.ManagedDataAccess.<version>.
- Installation Changes
- ====================
- The following app/web.config entries are added by including the "Official Oracle ODP.NET, Managed Entity Framework Driver"
- NuGet package to your application.
- 1) Entity Framework
- The following entry is added to enable Entity Framework to use Oracle.ManagedDataAccess.dll for executing Entity
- Framework related-operations, such as Entity Framework Code First and Entity Framework Code First Migrations against
- the Oracle Database.
- <configuration>
- <entityFramework>
- <providers>
- <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
- </providers>
- </entityFramework>
- </configuration>
- 2) Connection String
- The following entry is added to enable the classes that are derived from DbContext to be associated with a connection
- string instead to associating the derived class with a connection string programmatically by passing it via its
- constructor. The name of "OracleDbContext" should be changed to the class name of your class that derives from DbContext.
- In addition, the connectionString attribute should be modified properly to set the "User Id", "Password", and
- "Data Source" appropriately with valid values.
- <configuration>
- <connectionStrings>
- <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" />
- </connectionStrings>
- </configuration>
- Documentation Corrections and Additions
- =======================================
- This section contains information that corrects or adds to existing ODP.NET documentation relevant to Entity Framework.
- The existing ODP.NET documentation can be found here:
- http://docs.oracle.com/cd/E56485_01/index.htm
- Custom Entity Data Model (EDM) Type Mapping Not Applied to Generated Complex Types
- ---
- When using the EDM wizard to create a complex type from a function import, any custom EDM type mappings specified will
- not be applied. The EDM wizard uses the default type mappings and the only known workaround is to manually edit the
- resulting complex type. After the complex type is generated any type declaration (field, property, constructor parameter,
- etc.) in the complex object which has an undesired type (such as Decimal rather than Boolean) should be manually edited
- to be of the desired type.
- Entity Framework Code First: Code-Based Migrations With No Supporting Code Migration File
- ---
- When using code-based migrations with the Entity Framework provider, the migration history table may be dropped if no
- supporting code migration file existed prior to updating the database.
- Workaround: Ensure the supporting code migration file has been added prior to updating the database.
- The following steps can remove the migration history table:
- 1. Execute application to create database objects
- 2. Enable-Migrations
- 3. Make code change to POCO
- 4. Update-Database
- The workaround is to ensure code file is created:
- 1. Execute application to create database objects
- 2. Enable-Migrations
- 3. Make code change to POCO
- 4. Add-Migration (This step will create the necessary code migration file).
- 5. Update-Database
- Entity Framework Tips, Limitations, and Known Issues
- ====================================================
- This section contains Entity Framework related information that pertains to both ODP.NET, Managed Driver and ODP.NET,
- Unmanaged Driver.
- 1. Interval Day to Second and Interval Year to Month column values cannot be compared to literals in a WHERE clause of
- a LINQ to Entities or an Entity SQL query.
- 2. LINQ to Entities and Entity SQL (ESQL) queries that require the usage of SQL APPLY in the generated queries will
- cause SQL syntax error(s) if the Oracle Database being used does not support APPLY. In such cases, the inner exception
- message will indicate that APPLY is not supported by the database.
- 3. ODP.NET does not currently support wildcards that accept character ranges for the LIKE operator in Entity SQL
- (i.e. [] and [^]). [Bug 11683837]
- 4. Executing LINQ or ESQL query against tables with one or more column names that are close to or equal to the maximum
- length of identifiers (30 bytes) may encounter "ORA-00972: identifier is too long" error, due to the usage of alias
- identifier(s) in the generated SQL that exceed the limit.
- 5. An "ORA-00932: inconsistent datatypes: expected - got NCLOB" error will be encountered when trying to bind a string
- that is equal to or greater than 2,000 characters in length to an XMLType column or parameter. [Bug 12630958]
- 6. An "ORA-00932 : inconsistent datatypes" error can be encountered if a string of 2,000 or more characters, or a byte
- array with 4,000 bytes or more in length, is bound in a WHERE clause of a LINQ/ESQL query. The same error can be
- encountered if an entity property that maps to a BLOB, CLOB, NCLOB, LONG, LONG RAW, XMLTYPE column is used in a WHERE
- clause of a LINQ/ESQL query.
- 7. An "Arithmetic operation resulted in an overflow" exception can be encountered when fetching numeric values that
- have more precision than what the .NET type can support. In such cases, the LINQ or ESQL query can "cast" the value
- to a particular .NET or EDM type to limit the precision and avoid the exception. This approach can be useful if the
- LINQ/ESQL query has computed/calculated columns which will store up to 38 precision in Oracle, which cannot be
- represented as .NET decimal unless the value is casted.
- 8. Oracle Database treats NULLs and empty strings the same. When executing string related operations on NULLS or empty
- strings, the result will be NULL. When comparing strings with NULLs, use the equals operator (i.e. "x == NULL") in the
- LINQ query, which will in turn use the "IS NULL" condition in the generated SQL that will appropriately detect NULL-ness.
- 9. If an exception message of "The store provider factory type 'Oracle.ManagedDataAccess.Client.OracleClientFactory'
- does not implement the IServiceProvider interface." is encountered when executing an Entity Framework application with
- ODP.NET, the machine.config requires and entry for ODP.NET under the <DbProviderFactories> section. To resolve this
- issue by adding an entry in the machine.config, reinstall ODAC.
- 10. Creating a second instance of the context that derives from DbContext within an application and executing methods
- within the scope of that context that result in an interaction with the database may result in unexpected recreation of
- the database objects if the DropCreateDatabaseAlways database initializer is used.
- More Informations: https://entityframework.codeplex.com/workitem/2362
- Known Workarounds:
- - Use a different database initializer,
- - Use an operating system authenticated user for the connection, or
- - Include "Persist Security Info=true" in the connection string (Warning: Turning on "Persist Security Info" will cause
- the password to remain as part of the connection string).
|