Powered by Zoomin Software. For more details please contactZoomin

DataDirect Connect for ADO.NET Data Provider Help

Working with the Oracle Entity Framework Data Provider

Working with the Oracle Entity Framework Data Provider

  • Last Updated: April 16, 2026
  • 9 minute read
    • ADO.NET
    • Documentation

You can work with the Entity Framework data provider in the following ways:

  • By specifying connection string options. The Entity Framework data provider uses the standard Oracle ADO.NET data provider. You can influence the behavior of this underlying data provider using connection string options. See Configuring Connection Strings for more information.
  • By modifying the storage model file of an Entity Data Model. See Modifying the Storage Model File for more information.
  • By specifying the configuration file options. For example, you can restrict or expand the database objects available to you when generating a model, control type mapping, or enable the Logging application block. See Modifying Configuration File Options for more information.

Modifying the Storage Model File

Provider is an attribute of the Schema element in the storage model file of an Entity Data Model (EDM). The storage model file is written in the store schema definition language (SSDL).

The Entity Data Model wizard assigns the value when you select the Oracle data provider. If you are manually defining an Entity Data Model, assign the string DDTek.Oracle to the Provider attribute of the Schema element, as shown in the following example:

<Schema Namespace="AdventureWorksModel.Store" Alias="Self" Provider="DDTek.Oracle" ProviderManifestToken="10g" xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

Modifying Configuration File Options

The Entity Framework data provider defines a number of configuration options that enable you to customize the behavior of the data provider to meet your functional or performance needs. Configuration options are defined in configuration files. The following table summarizes the characteristics of configuration files in which you may want to specify options.

Configuration File Characteristics

Options How It is Used Applications Affected
Machine.config Can affect the model design and application runtime behavior.
The product Installer specifies many of the default configuration values in this file.
All applications running on the machine
devenv.exe.config Can affect how Visual Studio wizards create or update Entity Framework models. Visual Studio and its wizards
EdmGen.exe.config Can affect how the command-line EDM Generator tool works with Entity Framework model and mapping files. EdmGen tool
App.config
Web.config
Can affect the runtime behavior of your application. Can affect the runtime behavior of your application

The following table provides the typical locations for the configuration files.

Location of Configuration Files

Configuration File Location
Machine.config Various locations under the %SystemRoot% directory. For example,
  • \Microsoft.NET\Framework\v2.0.50727\Config
  • \Microsoft.NET\Framework64\v2.0.50727\Config
  • \Microsoft.NET\Framework\v4.0.30319\Config
  • \Microsoft.NET\Framework64\v4.0.30319\Config
The location that is used depends on the Framework version and platform being targeted by your application
devenv.exe.config C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
EdmGen.exe.config Various locations under the %SystemRoot% directory. For example:
  • \Microsoft.NET\Framework\v3.5
  • \Microsoft.NET\Framework\v4.0.30319
App.config
Web.config
In your Visual Studio project
Refer to the DataDirect Connect Series for ADO.NET Distribution Guide for information about deployed applications.

The following code fragment shows the syntax and default values:

<ddtek.oracle.entity
   edmSchemaRestrictions="User"
   enableLoggingApplicationBlock="false"
   storeNumberToEdmIntegerMappingBehavior="MaxNumberRange" workarounds="0">
   <storeEdmMappings>
      <add storeTypeName="raw" minimumLength="16" maximumLength="16"
       primitiveTypeKind="Guid" isDefaultStoreMapping="True" />
   </storeEdmMappings>
</ddtek.oracle.entity>

The following table lists the mapping of the configuration file options to their default values. See the alphabetical list of the configuration file options following the table for additional information.

Options for the Oracle Entity Framework Configuration File

Option Default Value
defaultSchemaName Empty string
edmSchemaRestrictions User
enableLoggingApplicationBlock False
labAssemblyName Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
labLogEntryTypeName Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry
labLoggerTypeName Microsoft.Practices.EnterpriseLibrary.Logging.Logger
storeEdmMappings Various, depending on the data type. See Mapping Data Types and Functions.
storeNumberToEdmIntegerMappingBehavior MaxNumberRange
workarounds 0

defaultSchemaName

Type

Attribute

Description

Specifies the default schema name. The setting affects the whole application.

The defaultSchemaName setting can affect the usefulness of DropCreateDatabaseIfModelChanges. Because the Entity Framework stores metadata about a model in the database, setting DefaultSchemaName to an empty string causes the model metadata to be created in the current schema resulting in a model-per-schema approach. Setting DefaultSchemaName to anything else causes the model metadata to be created in the specified schema, resulting in an all-models-for-schema approach, which can be problematic.

Valid Values

Schema | Empty string

When set to an empty string, unqualified tables remain unqualified. An application that uses more than one model must use the empty string value.

When set to Schema, unqualified tables are qualified with Schema . The model metadata is created in the specified schema.

Default

Empty string

edmSchemaRestrictions

Description

Restricts or expands the database objects available to you when generating a model from a database. The option filters the schema objects that are returned when building the EDM that your application includes. Restricting the objects can also provide a performance improvement.

Valid Values

User | Accessible | AccessibleExcludingList

When set to User, the data provider limits the objects available for the model to those for which the current user is the owner.

When set to Accessible, all the schema objects for which the current user has access are returned.

When set to AccessibleExcludingList, all the schema objects for which the current user has access are returned, less a predefined list of system-related schema.

Default

User

enableLoggingApplicationBlock

Type

Attribute

Description

Enables the Logging Application Block. Refer to the DataDirect Connect Series for ADO.NET Reference for information on using Logging Application Blocks.

Valid Values

True | False

When set to True, the Logging Application Block is enabled.

Default

False

labAssemblyName

Type

Attribute

Description

Specifies the version of the Enterprise Library Logging Application Block. By default, the Entity Framework data providers use the Enterprise Library 6.0 Logging Application Block.

NOTE: If you are using any version of the LAB other than the Microsoft Enterprise Library 6.0 binary release, you must set the labAssemblyName. For example, if you are using an older or newer version of the LAB, or a version that you have customized, you must specify a value for labAssemblyName.

Valid Values

string

where string is the name of the Enterprise Library Logging Application Block that you want to use.

Default

The Enterprise Library 6.0 Logging Application Block:

Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL

labLogEntryTypeName

Type

Attribute

Description

Specifies the LogEntry type name for the LogEntry object.

Valid Values

string

Where string is the LogEntry type name.

Default

Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry

labLoggerTypeName

Type

Attribute

Description

Specifies the Logger type name for the Logging Application Block.

Valid Values

string

Where string is the Logger type name.

Default

Microsoft.Practices.EnterpriseLibrary.Logging.Logger

storeEdmMappings

Type

Element

Description

Allows developers to override the default store-to-primitive type mappings. This setting supplements the storeNumberToEdmIntegerMappingBehavior attribute. The default store-to-primitive type mappings might not suit all developer's needs. For example, NUMBER(1, 0) maps to Boolean by default, but some developers might wish to map NUMBER(1, 0) to Byte and CHAR(1) to Boolean. See Mapping Order in the storeEdmMappings Element Collection for more information.

Valid Values

The storeEdmMappings element can define multiple properties:

storeTypeName. Required. Specifies the store type for which the mapping applies. Valid values are any valid Oracle type name. See also Mapping Data Types and Functions.

primitiveTypeKind. Required. Specifies the PrimitiveTypeKind for which this mapping applies. Valid values are any value from the PrimitiveTypeKind enum.

minimumLength. Specifies the smallest length for which this mapping applies. Valid values are 0 to Int32.MaxValue.

maximumLength. Specifies the largest length for which this mapping applies. Valid values are 0 to Int32.MaxValue.

minimumLength. Specifies the smallest length for which this mapping applies. Valid values are 0 to Int32.MaxValue.

minimumPrecision. Specifies the smallest precision for which this mapping applies. Valid values are 0 to 255.

maximumPrecision. Specifies the largest precision for which this mapping applies. Valid values are 0 to 255.

minimumScale. Specifies the smallest scale for which this mapping applies. Valid values are 0 to 255.

maximumScale. Specifies the largest scale for which this mapping applies. Valid values are 0 to 255.

trueValue. Specifies what constitutes a true value for Boolean mappings. Valid values are any string or integer value.

falseValue. Specifies what constitutes a false value for Boolean mappings. Valid values are any string or integer value.

isDefaultStoreMapping. Specifies whether this mapping should be considered the preferred mapping for the storeType when no specific mapping for the storeType can be found. Valid values are True or False.

Additional Semantics

storeNumberToEdmIntegerMappingBehavior="MaxIntegerRange" Semantic Equivalent

<DDTek.Oracle.Entity>
   <StoreEdmMappings>
      <add storeTypeName="number" primitiveTypeKind="Boolean" minimumPrecision="1"
         maximumPrecision="1" minimumScale="0" maximumScale="0" trueValue="1" falseValue="0" />
      <add storeTypeName="number" primitiveTypeKind="SByte" minimumPrecision="2"
         maximumPrecision="3" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Byte" minimumPrecision="2"
         maximumPrecision="3" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Int16" minimumPrecision="4"
         maximumPrecision="5" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Int32" minimumPrecision="6"
         maximumPrecision="10" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Int64" minimumPrecision="11"
         maximumPrecision="19" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Decimal" minimumPrecision="1"
         maximumPrecision="38" minimumScale="0" maximumScale="38" isDefaultStoreMapping="true" />
   </StoreEdmMappings>
</DDTek.Oracle.Entity>

storeNumberToEdmIntegerMappingBehavior="MaxNumberRange" Semantic Equivalent

<DDTek.Oracle.Entity>
   <StoreEdmMappings>
      <add storeTypeName="number" primitiveTypeKind="Boolean" minimumPrecision="1"
         maximumPrecision="1" minimumScale="0" maximumScale="0" trueValue="1" falseValue="0" />
      <add storeTypeName="number" primitiveTypeKind="SByte" minimumPrecision="2"
         maximumPrecision="2" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Byte" minimumPrecision="2"
         maximumPrecision="2" minimumScale="0" maximumScale="0" />
       <add storeTypeName="number" primitiveTypeKind="Int16" minimumPrecision="3"
         maximumPrecision="4" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Int32" minimumPrecision="5"
         maximumPrecision="9" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Int64" minimumPrecision="10"
         maximumPrecision="18" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Decimal" minimumPrecision="1"
         maximumPrecision="38" minimumScale="0" maximumScale="38" isDefaultStoreMapping="true" />
   </StoreEdmMappings>
</DDTek.Oracle.Entity>

Example

The following example shows the use of the StoreEdmMapping option in the storeNumberToEdmIntegerMappingBehavior attribute.

<DDTek.Oracle.Entity storeNumberToEdmIntegerMappingBehavior="MaxIntegerRange">
   <StoreEdmMappings>
      <add
         storeType="number"
         minimumPrecision="1"
         maximumPrecision="1"
         minimumScale="0"
         maximumScale="0"
         primitiveTypeKind="Byte"
         />
      <add
          storeType="char"
         minimumLength="1"
         maximumLength="1"
         primitiveTypeKind="Boolean"
         trueValue="T"
         falseValue="F"
         />
         <add
         storeType="number"
         minimumPrecision="0"
         maximumPrecision="38"
         minimumScale="-84"
         maximumScale="127"
         primitiveTypeKind="Decimal"
         isDefault="True"
         />
   </StoreEdmMappings>
</ddtek.oracle.entity>

Default

Various, depending on the data type. See also Mapping Data Types and Functions.

storeNumberToEdmIntegerMappingBehavior

Type

Attribute

Description

Controls how the data provider maps the NUMBER store type to various Edm Types.

Valid Values

MaxNumberRange | MaxIntegerRange

When the option is set to MaxIntegerRange, the data provider picks a store-to-Edm mapping that most efficiently stores an integer value in the database. The valid mappings are shown in the following table.

Store Type Edm Type
NUMBER(1, 0) Boolean
NUMBER(2 <= p <= 5, 0) Int16
NUMBER(6 <= p <=10, 0) Int32
NUMBER(5 <= p <= 9, 0) Int32
NUMBER(11 <= p <= 19, 0) Int64
NUMBER(p, s) Decimal

If set to MaxNumberRange, the data provider picks a store-to-Edm mapping that ensures all possible database values can be stored in the Edm type, as shown in the following examples.

Store Type Edm Type
NUMBER(1, 0) Boolean
NUMBER(2, 0) SByte
NUMBER(3 <= p <= 4, 0) Int16
NUMBER(5 <= p <= 9, 0) Int32
NUMBER(10 <= p <= 18, 0) Int64
NUMBER(p, s) Decimal

Examples

If your model defines an Int16, which has a maximum precision of 5 (that is, Int16.MaxValue == 32,767), a NUMBER(5,0) store type most efficiently stores all Int16 values. Set this option to MaxIntegerRange.

If the database value that you want to model could range as high as 99,999 (the maximum value for NUMBER(5,0), set this option MaxNumberRange. Because the database value could exceed the range of an Int16, an Int32 must be used.

Default

MaxNumberRange

workarounds

Type

Attribute

Description

Specifies the non-standard configuration options (workarounds) for the data providers that enable you to take full advantage non-standard or extended behavior in the data providers.

Valid Values

0 | 1 | 2 | 4 | n

where n is the sum of a combination of workarounds.

When set to 0, no workarounds are used.

When set to 1, the data provider preserves incorrect behavior found prior to Version 3.3 SP1): Number types with a precision >= 11 and a scale of 0 resolve to an Int64, including those with a precision >= 20 that should not resolve to Int64.

When set to 2, the data provider preserves incorrect behavior prior to Version 3.5: Number types with 1 < precision <= 3 and a scale of 0 map to Int16.

When set to 4, the data provider maps byte array to Varbinary for code first and model first.

When set to n, multiple workarounds are enabled. Add the string WorkArounds= with a value of n (WorkArounds=n ), where the value n is the cumulative value of all options added together. For example, if you wanted to use both workarounds=1 and workarounds=2, you would enter in the configuration file:

WorkArounds=3

Default

0

Mapping Order in the storeEdmMappings Element Collection

The order of the storeEdmMappings element collection determines the preferred mapping for the primitive type when mapping a store type to a primitive type. Consider the following example, where the same store type, NUMBER(2,0), maps to two different primitive types, SByte and Byte.

<DDTek.Oracle.Entity>
   <StoreEdmMappings>
      <add storeTypeName="number" primitiveTypeKind="SByte" minimumPrecision="2"
         maximumPrecision="2" minimumScale="0" maximumScale="0" />
      <add storeTypeName="number" primitiveTypeKind="Byte" minimumPrecision="2"
         maximumPrecision="2" minimumScale="0" maximumScale="0" />
   </StoreEdmMappings>
</DDTek.Oracle.Entity>

Because multiple, identical store types exist, the data provider chooses the primitive type based on the order specified. In this case, SByte is preferred, since it was is listed before Byte. The pseudo type is number_as_sbyte.

Conversely, the order of the StoreEdmMappings element collection determines the preferred mapping for the store type when mapping a primitive type to a store type. Consider the following example, where the same primitive type, Byte, maps to two different store types, NUMBER(1) and RAW(1).

<DDTek.Oracle.Entity>
   <StoreEdmMappings>
      <add storeTypeName="number" primitiveTypeKind="Byte" minimumPrecision="1"
         maximumPrecision="1" minimumScale="0" maximumScale="0" />
      <add storeTypeName="raw" primitiveTypeKind="Byte" minimumPrecision="1"
         maximumPrecision="1" minimumScale="0" maximumScale="0" />
   </StoreEdmMappings>
</DDTek.Oracle.Entity>

Because multiple, identical primitive types exist, the data provider chooses the store type based on the order specified. In this case, NUMBER(1) is preferred, since it is listed before RAW(1). The pseudo type is number_as_byte.

Finally, the order of items in the StoreEdmMappings element collection must be from specific to general; otherwise, a more general item will always be preferred over a more specific item. Consider the following example, where the StoreEdmMappings element collection is defined incorrectly from general to specific.

<DDTek.Oracle.Entity>
   <StoreEdmMappings>
      <add storeTypeName="number" primitiveTypeKind="Decimal" minimumPrecision="1"
         maximumPrecision="38" minimumScale="0" maximumScale="38" isDefaultStoreMapping="true" />
      <add storeTypeName="number" primitiveTypeKind="Boolean" minimumPrecision="1"
         maximumPrecision="1" minimumScale="0" maximumScale="0" trueValue="1" falseValue="0" />
   </StoreEdmMappings>
</DDTek.Oracle.Entity>

In this example, the ordering always prefers the first item in the collection because the second item's store type, NUMBER(1,0) fits in the more general range specified in the first item, NUMBER(1..38, 0..38).

TitleResults for “How to create a CRG?”Also Available inAlert