@@ -0,0 +1,55 @@
# Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

# This file contains command-line options that the VB
# command line compiler (VBC) will process as part
# of every compilation, unless the "/noconfig" option
# is specified.

# Reference the common Framework libraries
/r:Accessibility.dll
/r:System.Configuration.dll
/r:System.Configuration.Install.dll
/r:System.Data.dll
/r:System.Data.OracleClient.dll
/r:System.Deployment.dll
/r:System.Design.dll
/r:System.DirectoryServices.dll
/r:System.dll
/r:System.Drawing.Design.dll
/r:System.Drawing.dll
/r:System.EnterpriseServices.dll
/r:System.Management.dll
/r:System.Messaging.dll
/r:System.Runtime.Remoting.dll
/r:System.Runtime.Serialization.Formatters.Soap.dll
/r:System.Security.dll
/r:System.ServiceProcess.dll
/r:System.Transactions.dll
/r:System.Web.dll
/r:System.Web.Mobile.dll
/r:System.Web.RegularExpressions.dll
/r:System.Web.Services.dll
/r:System.Windows.Forms.dll
/r:System.XML.dll

/r:System.Workflow.Activities.dll
/r:System.Workflow.ComponentModel.dll
/r:System.Workflow.Runtime.dll
/r:System.Runtime.Serialization.dll
/r:System.ServiceModel.dll

/r:System.Core.dll
/r:System.Xml.Linq.dll
/r:System.Data.Linq.dll
/r:System.Data.DataSetExtensions.dll
/r:System.Web.Extensions.dll
/r:System.Web.Extensions.Design.dll
/r:System.ServiceModel.Web.dll

# Import System and Microsoft.VisualBasic
/imports:System
/imports:Microsoft.VisualBasic
/imports:System.Linq
/imports:System.Xml.Linq

/optioninfer+
Binary file not shown.

Large diffs are not rendered by default.

Binary file not shown.

Large diffs are not rendered by default.

Binary file not shown.
@@ -0,0 +1,75 @@
function AddOrUpdate-Reference($scriptsFolderProjectItem, $fileNamePattern, $newFileName) {
try {
$referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js")
}
catch {
# _references.js file not found
return
}

if ($referencesFileProjectItem -eq $null) {
# _references.js file not found
return
}

$referencesFilePath = $referencesFileProjectItem.FileNames(1)
$referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js"

if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 0) {
# File has no existing matching reference line
# Add the full reference line to the beginning of the file
"/// <reference path=""$newFileName"" />" | Add-Content $referencesTempFilePath -Encoding UTF8
Get-Content $referencesFilePath | Add-Content $referencesTempFilePath
}
else {
# Loop through file and replace old file name with new file name
Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath
}

# Copy over the new _references.js file
Copy-Item $referencesTempFilePath $referencesFilePath -Force
Remove-Item $referencesTempFilePath -Force
}

function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) {
try {
$referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js")
}
catch {
# _references.js file not found
return
}

if ($referencesFileProjectItem -eq $null) {
return
}

$referencesFilePath = $referencesFileProjectItem.FileNames(1)
$referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js"

if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) {
# Delete the line referencing the file
Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath

# Copy over the new _references.js file
Copy-Item $referencesTempFilePath $referencesFilePath -Force
Remove-Item $referencesTempFilePath -Force
}
}

# Extract the version number from the file in the package's content\scripts folder
$packageScriptsFolder = Join-Path $installPath Content\Scripts
$modernizrFileName = Join-Path $packageScriptsFolder "modernizr-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf
$modernizrFileNameRegEx = "modernizr-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)).js"
$modernizrFileName -match $modernizrFileNameRegEx
$ver = $matches[1]

# Get the project item for the scripts folder
try {
$scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts")
$projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1)
}
catch {
# No Scripts folder
Write-Host "No scripts folder found"
}
@@ -0,0 +1,12 @@
param($installPath, $toolsPath, $package, $project)

. (Join-Path $toolsPath common.ps1)

if ($scriptsFolderProjectItem -eq $null) {
# No Scripts folder
Write-Host "No Scripts folder found"
exit
}

# Update the _references.js file
AddOrUpdate-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx $modernizrFileName
@@ -0,0 +1,6 @@
param($installPath, $toolsPath, $package, $project)

. (Join-Path $toolsPath common.ps1)

# Update the _references.js file
Remove-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx
Binary file not shown.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,93 @@
param($installPath, $toolsPath, $package, $project)

# open json.net splash page on package install
# don't open if json.net is installed as a dependency

try
{
$url = "http://james.newtonking.com/json"
$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])

if ($dte2.ActiveWindow.Caption -eq "Package Manager Console")
{
# user is installing from VS NuGet console
# get reference to the window, the console host and the input history
# show webpage if "install-package newtonsoft.json" was last input

$consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow])

$props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)

$prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1
if ($prop -eq $null) { return }

$hostInfo = $prop.GetValue($consoleWindow)
if ($hostInfo -eq $null) { return }

$history = $hostInfo.WpfConsole.InputHistory.History

$lastCommand = $history | select -last 1

if ($lastCommand)
{
$lastCommand = $lastCommand.Trim().ToLower()
if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json"))
{
$dte2.ItemOperations.Navigate($url) | Out-Null
}
}
}
else
{
# user is installing from VS NuGet dialog
# get reference to the window, then smart output console provider
# show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation

$instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor `
[System.Reflection.BindingFlags]::NonPublic)
$consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)
if ($instanceField -eq $null -or $consoleField -eq $null) { return }

$instance = $instanceField.GetValue($null)
if ($instance -eq $null) { return }

$consoleProvider = $consoleField.GetValue($instance)
if ($consoleProvider -eq $null) { return }

$console = $consoleProvider.CreateOutputConsole($false)

$messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor `
[System.Reflection.BindingFlags]::NonPublic)
if ($messagesField -eq $null) { return }

$messages = $messagesField.GetValue($console)
if ($messages -eq $null) { return }

$operations = $messages -split "=============================="

$lastOperation = $operations | select -last 1

if ($lastOperation)
{
$lastOperation = $lastOperation.ToLower()

$lines = $lastOperation -split "`r`n"

$installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1

if ($installMatch)
{
$dte2.ItemOperations.Navigate($url) | Out-Null
}
}
}
}
catch
{
# stop potential errors from bubbling up
# worst case the splash page won't open
}

# yolo
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,115 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<configSections xdt:Transform="InsertIfMissing">
</configSections>

<configSections xdt:Transform="InsertBefore(/configuration/*[1])">
</configSections>

<!-- remove existing entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>

<!-- insert new entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</configSections>

<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- If system.data tag is absent -->
<system.data xdt:Transform="InsertIfMissing">
<DbProviderFactories>
</DbProviderFactories>
</system.data>

<!-- If system.data tag is present, but DbProviderFactories tag is absent -->
<system.data>
<DbProviderFactories xdt:Transform="InsertIfMissing">
</DbProviderFactories>
</system.data>

<!-- remove existing ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>

<!-- add new ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Insert"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</DbProviderFactories>
</system.data>

<!-- If runtime tag is absent -->
<runtime xdt:Transform="InsertIfMissing">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>

<!-- If runtime tag is present, but assembly binding tag is absent -->
<runtime>
<assemblyBinding xdt:Transform="InsertIfMissing" xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>

<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- insert new entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Insert">
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- If oracle.manageddataaccess.client tag is absent -->
<oracle.manageddataaccess.client xdt:Transform="InsertIfMissing">
<version number="*">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- If version tag is absent -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="InsertIfMissing">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- If dataSources tag is absent -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="InsertIfMissing">
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- add entry if missing -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="InsertIfMissing" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

</configuration>
@@ -0,0 +1,4 @@
<configuration>
<configSections>
</configSections>
</configuration>
@@ -0,0 +1,64 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- remove existing entry -->
<configSections>
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>

<!-- remove if section is empty -->
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>

<!-- remove if section is empty -->
<system.data>
<DbProviderFactories xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</system.data>
<system.data xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- remove if section is empty -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</runtime>
<runtime xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="Remove" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- remove if section is empty -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</version>
</oracle.manageddataaccess.client>

<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</oracle.manageddataaccess.client>

<oracle.manageddataaccess.client xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

</configuration>
@@ -0,0 +1,114 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<configSections xdt:Transform="InsertIfMissing">
</configSections>

<configSections xdt:Transform="InsertBefore(/configuration/*[1])">
</configSections>

<!-- remove existing entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>

<!-- insert new entry -->
<configSections xdt:Locator="XPath(/configuration/configSections[last()])">
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</configSections>

<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- If system.data tag is absent -->
<system.data xdt:Transform="InsertIfMissing">
<DbProviderFactories>
</DbProviderFactories>
</system.data>

<!-- If system.data tag is present, but DbProviderFactories tag is absent -->
<system.data>
<DbProviderFactories xdt:Transform="InsertIfMissing">
</DbProviderFactories>
</system.data>

<!-- remove existing ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>

<!-- add new ODPM entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Insert"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</DbProviderFactories>
</system.data>

<!-- If runtime tag is absent -->
<runtime xdt:Transform="InsertIfMissing">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>

<!-- If runtime tag is present, but assembly binding tag is absent -->
<runtime>
<assemblyBinding xdt:Transform="InsertIfMissing" xmlns="urn:schemas-microsoft-com:asm.v1">
</assemblyBinding>
</runtime>

<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- insert new entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Insert">
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- If oracle.manageddataaccess.client tag is absent -->
<oracle.manageddataaccess.client xdt:Transform="InsertIfMissing">
<version number="*">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- If version tag is absent -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="InsertIfMissing">
<dataSources>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- If dataSources tag is absent -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="InsertIfMissing">
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- add entry if missing -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="InsertIfMissing" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

</configuration>
@@ -0,0 +1,4 @@
<configuration>
<configSections>
</configSections>
</configuration>
@@ -0,0 +1,64 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- remove existing entry -->
<configSections>
<section name="oracle.manageddataaccess.client" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</configSections>

<!-- remove if section is empty -->
<configSections xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" xdt:Transform="Remove" xdt:Locator="Match(invariant)" />
<add name="ODP.NET, Managed Driver" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</DbProviderFactories>
</system.data>

<!-- remove if section is empty -->
<system.data>
<DbProviderFactories xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</system.data>
<system.data xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly xdt:Transform="Remove"
xdt:Locator="Condition(./_defaultNamespace:assemblyIdentity/@name='Oracle.ManagedDataAccess')" >
</dependentAssembly>
</assemblyBinding>
</runtime>

<!-- remove if section is empty -->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</runtime>
<runtime xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " xdt:Transform="Remove" xdt:Locator="Match(alias)"/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<!-- remove if section is empty -->
<oracle.manageddataaccess.client>
<version number="*">
<dataSources xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</version>
</oracle.manageddataaccess.client>

<!-- remove existing entry -->
<oracle.manageddataaccess.client>
<version number="*" xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</oracle.manageddataaccess.client>

<oracle.manageddataaccess.client xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

</configuration>

Large diffs are not rendered by default.

@@ -0,0 +1,242 @@
Oracle.ManagedDataAccess NuGet Package 12.2.1100 README
===========================================================

Release Notes: Oracle Data Provider for .NET, Managed Driver

May 2017

Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.

This document provides information that supplements the Oracle Data Provider for .NET (ODP.NET) documentation.
You have downloaded Oracle Data Provider for .NET 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
*Bug Fixes
*Installation and Configuration Steps
*Installation Changes
*Documentation Corrections and Additions
*ODP.NET, Managed Driver Tips, Limitations, and Known Issues

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 and for other Visual Studio designers such as the
TableAdapter Wizard. This NuGet download does not enable design-time tools; it only provides run-time support.
This version of ODP.NET supports Oracle Database version 10.2 and higher.


New Features since Oracle.ManagedDataAccess NuGet Package 12.1.24160719
=======================================================================
1. Database Resident Connection Pooling
2. Multitenant and Pluggable Databases Connection Pooling
3. Edition-Based Redefinition Connection Pooling
4. Connection Configuration Upon Open
5. .NET Framework 4.6.2 and 4.7 certification
6. Longer Schema Identifiers
7. PL/SQL Boolean Data Type

For more details on these features, visit the new features section of the ODP.NET documentation:
http://docs.oracle.com/cd/E85694_01/ODPNT/release_changes.htm#GUID-23EE609C-064C-484E-9D3A-C9CA4E1A970F


Bug Fixes since Oracle.ManagedDataAccess NuGet Package 12.1.24160719
====================================================================
24700485 VALUES ARE PARTIALLY FILLED IN DATATABLE USING MANAGED ODP.NET
22765798 ODPM: INDEX OUTSIDE ARRAY BOUNDS EXCEPTION WHEN FETCHSIZE HAS LARGE VALUE
24810947 KERBEROS INITIAL HANDSHAKE FAILS IF "AUTHENTICATOR" IS GREATER THAN SDU SIZE
25490365 LATEST DST PATCH NEEDS TO BE ADDED FOR ODP.NET MANAGED DRIVER
22385038 ORA-31061: XDB ERROR WHILE INSERTING DATA INTO XMLTYPE DATATYPE USING ODPM
24299880 ORA-00303 WHEN PROGRAM PATH CONTAINS # CHARACTER AND POOLING ENABLED
21393655 ODPM THROWS "INDEX WAS OUT OF RANGE" EXCEPTION WHILE FETCHING NULL AND XMLTYPE
21847644 SYSTEM.INDEXOUTOFRANGEEXCEPTION OR SYSTEM.ARGUMENTEXCEPTION WITH MANAGED ODP.NET
22308527 UNEXPECTED PACKET ERROR WITH NEWLINE WITHIN SQL QUERY


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.

1. Un-GAC and un-configure any existing assembly (i.e. Oracle.ManagedDataAccess.dll) and policy DLL
(i.e. Policy.4.122.Oracle.ManagedDataAccess.dll) for the ODP.NET, Managed Driver, version 12.2.0.1
that exist in the GAC. Remove all references of Oracle.ManagedDataAccess from machine.config file, if any exists.

2. In Visual Studio, 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 NuGet
packages will appear.


From Nuget.org
--------------
A. In the Search box in the upper right, search for the package with id, "Oracle.ManagedDataAccess". Verify
that the package uses this unique ID to ensure it is the official Oracle Data Provider for .NET, Managed Driver
download.

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.

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>

After following these instructions, ODP.NET is now configured and ready to use.

NOTE: ODP.NET, Managed Driver comes with two platform specific assemblies:

i. Oracle.ManagedDataAccessDTC.dll (for Distributed Transaction Support)
ii. Oracle.ManagedDataAccessIOP.dll (for Kerberos Support)

The Oracle.ManagedDataAccessDTC.dll assembly is ONLY needed if you are using Distributed Trasactions and the
.NET Framework being used is 4.5.1 or lower. If you are using .NET Framework 4.5.2 or higher, this assembly does
not need to be referenced by your application.

The Oracle.ManagedDataAccessIOP.dll assembly is ONLY needed if you are using Kerberos5 based external
authentication. Kerberos5 users will need to download MIT Kerberos for Windows version 4.0.1 from
http://web.mit.edu/kerberos/dist/
to utilize ODP.NET, Managed Driver's support of Kerberos5.

These asssemblies are located under
packages\Oracle.ManagedDataAccess.<version>\bin\x64
and
packages\Oracle.ManagedDataAccess.<version>\bin\x86
depending on the platform.

If these assemblies are required by your application, your Visual Studio project requires additional changes.

Use the following steps for your application to use the 64-bit version of Oracle.ManagedDataAccessDTC.dll:

1. Right click on the Visual Studio project.
2. Select Add -> New Folder
3. Name the folder x64.
4. Right click on the newly created x64 folder
5. Select Add -> Existing Item
6. Browse to packages\Oracle.ManagedDataAccess.<version>\bin\x64 under your project solution directory.
7. Choose Oracle.ManagedDataAccessDTC.dll
8. Click the 'Add' button
9. Left click the newly added Oracle.ManagedDataAccessDTC.dll in the x64 folder
10. In the properties window, set 'Copy To Output Directory' to 'Copy Always'.

For x86 targeted applications, name the folder x86 and add assemblies from the
packages\Oracle.ManagedDataAccess.<version>\bin\x86 folder.

Use the same steps for adding Oracle.ManagedDataAccessIOP.dll.

To make your application platform independent even if it depends on Oracle.ManagedDataAccessDTC.dll and/or
Oracle.ManagedDataAccessIOP.dll, create both x64 and x86 folders with the necessary assemblies added to them.


Installation Changes
====================
The following app/web.config entries are added by including the "Official Oracle ODP.NET, Managed Driver" NuGet package
to your application:

1) Configuration Section Handler

The following entry is added to the app/web.config to enable applications to add an <oracle.manageddataaccess.client>
section for ODP.NET, Managed Driver-specific configuration:

<configuration>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
</configuration>

Note: If your application is a web application and the above entry was added to a web.config and the same config
section handler for "oracle.manageddataaccess.client" also exists in machine.config but the "Version" attribute values
are different, an error message of "There is a duplicate 'oracle.manageddataaccess.client' section defined." may be
observed at runtime. If so, the config section handler entry in the machine.config for
"oracle.manageddataaccess.client" has to be removed from the machine.config for the web application to not encounter
this error. But given that there may be other applications on the machine that depended on this entry in the
machine.config, this config section handler entry may need to be moved to all of the application's .NET config file on
that machine that depend on it.

2) DbProviderFactories

The following entry is added for applications that use DbProviderFactories and DbProviderFactory classes. Also, any
DbProviderFactories entry for "Oracle.ManagedDataAccess.Client" in the machine.config will be ignored with the following
entry:

<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
</configuration>

3) Dependent Assembly

The following entry is created to ignore policy DLLs for Oracle.ManagedDataAccess.dll and always use the
Oracle.ManagedDataAccess.dll version that is specified by the newVersion attribute in the <bindingRedirect> element.
The newVersion attribute corresponds to the Oracle.ManagedDataAccess.dll version which came with the NuGet package
associated with the application.

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.122.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

4) Data Sources

The following entry is added to provide a template on how a data source can be configured in the app/web.config.
Simply rename "MyDataSource" to an alias of your liking and modify the PROTOCOL, HOST, PORT, SERVICE_NAME as required
and un-comment the <dataSource> element. Once that is done, the alias can be used as the "data source" attribute in
your connection string when connecting to an Oracle Database through ODP.NET, Managed Driver.

<configuration>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>


Documentation Corrections and Additions
=======================================
This section contains information that corrects or adds to existing ODP.NET documentation, which can be found here:
http://www.oracle.com/technetwork/topics/dotnet/tech-info/index.html


ODP.NET, Managed Driver Tips, Limitations, and Known Issues
===========================================================
This section contains information that is specific to ODP.NET, Managed Driver.

1. OracleConnection object's OpenWithNewPassword() method invocation will result in an ORA-1017 error with 11.2.0.3.0
and earlier versions of the database. [Bug 12876992]

2. ODP.NET does not support usage of the "ALTER SESSION" statement to modify the Edition in Edition-Based Redefinition during the lifetime of a process.

3. ODP.NET, Managed Driver and Distributed Transactions - Using managed ODP.NET distributed transactions with Oracle.ManagedDataAccessDTC.dll is deprecated as it is primarily used with .NET Framework 4 releases earlier than .NET 4.5.2. Microsoft has desupported these earlier .NET Framework 4 versions. Managed ODP.NET distributed transactions will continue to be supported and enhanced with .NET Framework's native fully managed distributed transaction implementation.
Binary file not shown.
@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- If connectionStrings tag is absent -->
<connectionStrings xdt:Transform="InsertIfMissing">
</connectionStrings>

<!-- add entry if missing -->
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" />
</connectionStrings>

<!-- If entityFramework tag is absent -->
<entityFramework xdt:Transform="InsertIfMissing">
</entityFramework>

<!-- If entityFramework tag is present but if providers tag is absent -->
<entityFramework>
<providers xdt:Transform="InsertIfMissing">
</providers>
</entityFramework>

<!-- remove existing entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Remove" xdt:Locator="Match(invariantName)" />
</providers>
</entityFramework>

<!-- insert new entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</providers>
</entityFramework>

</configuration>
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- remove existing entry -->
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</connectionStrings>

<!-- remove if section is empty -->
<connectionStrings xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Remove" xdt:Locator="Match(invariantName)" />
</providers>
</entityFramework>

<!-- remove if section is empty -->
<entityFramework>
<providers xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</entityFramework>
<entityFramework xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

</configuration>
@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- If connectionStrings tag is absent -->
<connectionStrings xdt:Transform="InsertIfMissing">
</connectionStrings>

<!-- add entry if missing -->
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" />
</connectionStrings>

<!-- If entityFramework tag is absent -->
<entityFramework xdt:Transform="InsertIfMissing">
</entityFramework>

<!-- If entityFramework tag is present but if providers tag is absent -->
<entityFramework>
<providers xdt:Transform="InsertIfMissing">
</providers>
</entityFramework>

<!-- remove existing entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Remove" xdt:Locator="Match(invariantName)" />
</providers>
</entityFramework>

<!-- insert new entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Insert" />
</providers>
</entityFramework>

</configuration>
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<!-- remove existing entry -->
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</connectionStrings>

<!-- remove if section is empty -->
<connectionStrings xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

<!-- remove existing entry -->
<entityFramework>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" xdt:Transform="Remove" xdt:Locator="Match(invariantName)" />
</providers>
</entityFramework>

<!-- remove if section is empty -->
<entityFramework>
<providers xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />
</entityFramework>
<entityFramework xdt:Transform="RemoveAll" xdt:Locator="Condition(count(*)=0)" />

</configuration>
@@ -0,0 +1 @@
You have downloaded Oracle Data Provider for .NET from Oracle, the license agreement to which is available at http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
@@ -0,0 +1,198 @@
Oracle.ManagedDataAccess.EntityFramework Nuget Package Version 12.2.1100 README
===============================================================================

Release Notes: Oracle Data Provider for .NET, Managed Driver for Entity Framework

May 2017

Copyright (c) Oracle Corporation 2017

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.2400
===========================================================================================
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.2.0.1 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.2.0.1 versions then.

2. In Visual Studio, 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="SampleDataSource" 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.122.1.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
=======================================
None



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).
Binary file not shown.
@@ -0,0 +1,326 @@
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
window.matchMedia = window.matchMedia || (function(doc, undefined){

var bool,
docElem = doc.documentElement,
refNode = docElem.firstElementChild || docElem.firstChild,
// fakeBody required for <FF4 when executed in <head>
fakeBody = doc.createElement('body'),
div = doc.createElement('div');

div.id = 'mq-test-1';
div.style.cssText = "position:absolute;top:-100em";
fakeBody.style.background = "none";
fakeBody.appendChild(div);

return function(q){

div.innerHTML = '&shy;<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>';

docElem.insertBefore(fakeBody, refNode);
bool = div.offsetWidth == 42;
docElem.removeChild(fakeBody);

return { matches: bool, media: q };
};

})(document);




/*! Respond.js v1.2.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
(function( win ){
//exposed namespace
win.respond = {};

//define update even in native-mq-supporting browsers, to avoid errors
respond.update = function(){};

//expose media query support flag for external use
respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches;

//if media queries are supported, exit here
if( respond.mediaQueriesSupported ){ return; }

//define vars
var doc = win.document,
docElem = doc.documentElement,
mediastyles = [],
rules = [],
appendedEls = [],
parsedSheets = {},
resizeThrottle = 30,
head = doc.getElementsByTagName( "head" )[0] || docElem,
base = doc.getElementsByTagName( "base" )[0],
links = head.getElementsByTagName( "link" ),
requestQueue = [],

//loop stylesheets, send text content to translate
ripCSS = function(){
var sheets = links,
sl = sheets.length,
i = 0,
//vars for loop:
sheet, href, media, isCSS;

for( ; i < sl; i++ ){
sheet = sheets[ i ],
href = sheet.href,
media = sheet.media,
isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";

//only links plz and prevent re-parsing
if( !!href && isCSS && !parsedSheets[ href ] ){
// selectivizr exposes css through the rawCssText expando
if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
translate( sheet.styleSheet.rawCssText, href, media );
parsedSheets[ href ] = true;
} else {
if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base)
|| href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){
requestQueue.push( {
href: href,
media: media
} );
}
}
}
}
makeRequests();
},

//recurse through request queue, get css text
makeRequests = function(){
if( requestQueue.length ){
var thisRequest = requestQueue.shift();

ajax( thisRequest.href, function( styles ){
translate( styles, thisRequest.href, thisRequest.media );
parsedSheets[ thisRequest.href ] = true;
makeRequests();
} );
}
},

//find media blocks in css text, convert to style blocks
translate = function( styles, href, media ){
var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ),
ql = qs && qs.length || 0,
//try to get CSS path
href = href.substring( 0, href.lastIndexOf( "/" )),
repUrls = function( css ){
return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" );
},
useMedia = !ql && media,
//vars used in loop
i = 0,
j, fullq, thisq, eachq, eql;

//if path exists, tack on trailing slash
if( href.length ){ href += "/"; }

//if no internal queries exist, but media attr does, use that
//note: this currently lacks support for situations where a media attr is specified on a link AND
//its associated stylesheet has internal CSS media queries.
//In those cases, the media attribute will currently be ignored.
if( useMedia ){
ql = 1;
}


for( ; i < ql; i++ ){
j = 0;

//media attr
if( useMedia ){
fullq = media;
rules.push( repUrls( styles ) );
}
//parse for styles
else{
fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1;
rules.push( RegExp.$2 && repUrls( RegExp.$2 ) );
}

eachq = fullq.split( "," );
eql = eachq.length;

for( ; j < eql; j++ ){
thisq = eachq[ j ];
mediastyles.push( {
media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all",
rules : rules.length - 1,
hasquery: thisq.indexOf("(") > -1,
minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ),
maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" )
} );
}
}

applyMedia();
},

lastCall,

resizeDefer,

// returns the value of 1em in pixels
getEmValue = function() {
var ret,
div = doc.createElement('div'),
body = doc.body,
fakeUsed = false;

div.style.cssText = "position:absolute;font-size:1em;width:1em";

if( !body ){
body = fakeUsed = doc.createElement( "body" );
body.style.background = "none";
}

body.appendChild( div );

docElem.insertBefore( body, docElem.firstChild );

ret = div.offsetWidth;

if( fakeUsed ){
docElem.removeChild( body );
}
else {
body.removeChild( div );
}

//also update eminpx before returning
ret = eminpx = parseFloat(ret);

return ret;
},

//cached container for 1em value, populated the first time it's needed
eminpx,

//enable/disable styles
applyMedia = function( fromResize ){
var name = "clientWidth",
docElemProp = docElem[ name ],
currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp,
styleBlocks = {},
lastLink = links[ links.length-1 ],
now = (new Date()).getTime();

//throttle resize calls
if( fromResize && lastCall && now - lastCall < resizeThrottle ){
clearTimeout( resizeDefer );
resizeDefer = setTimeout( applyMedia, resizeThrottle );
return;
}
else {
lastCall = now;
}

for( var i in mediastyles ){
var thisstyle = mediastyles[ i ],
min = thisstyle.minw,
max = thisstyle.maxw,
minnull = min === null,
maxnull = max === null,
em = "em";

if( !!min ){
min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
}
if( !!max ){
max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
}

// if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true
if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){
if( !styleBlocks[ thisstyle.media ] ){
styleBlocks[ thisstyle.media ] = [];
}
styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );
}
}

//remove any existing respond style element(s)
for( var i in appendedEls ){
if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){
head.removeChild( appendedEls[ i ] );
}
}

//inject active styles, grouped by media type
for( var i in styleBlocks ){
var ss = doc.createElement( "style" ),
css = styleBlocks[ i ].join( "\n" );

ss.type = "text/css";
ss.media = i;

//originally, ss was appended to a documentFragment and sheets were appended in bulk.
//this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!
head.insertBefore( ss, lastLink.nextSibling );

if ( ss.styleSheet ){
ss.styleSheet.cssText = css;
}
else {
ss.appendChild( doc.createTextNode( css ) );
}

//push to appendedEls to track for later removal
appendedEls.push( ss );
}
},
//tweaked Ajax functions from Quirksmode
ajax = function( url, callback ) {
var req = xmlHttp();
if (!req){
return;
}
req.open( "GET", url, true );
req.onreadystatechange = function () {
if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){
return;
}
callback( req.responseText );
}
if ( req.readyState == 4 ){
return;
}
req.send( null );
},
//define ajax obj
xmlHttp = (function() {
var xmlhttpmethod = false;
try {
xmlhttpmethod = new XMLHttpRequest();
}
catch( e ){
xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" );
}
return function(){
return xmlhttpmethod;
};
})();

//translate CSS
ripCSS();

//expose update for re-running respond later on
respond.update = ripCSS;

//adjust on resize
function callMedia(){
applyMedia( true );
}
if( win.addEventListener ){
win.addEventListener( "resize", callMedia, false );
}
else if( win.attachEvent ){
win.attachEvent( "onresize", callMedia );
}
})(this);
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,90 @@
param($installPath, $toolsPath, $package, $project)

# Return a relative path with reference to root as Uri object
# $rootPath - root path
# $relativePath - relative path
# $appendToRelativePath - Optional parameter. If provided will be appended to relative Path using Path.Combine()
Function GetRelativeUri($rootPath, $relativePath, $appendToRelativePath)
{
if($rootPath -eq $null)
{
return $null
}

if($relativePath -eq $null)
{
return $null
}

$rootUri = new-object system.Uri($rootPath)
$targetPath = $relativePath

# If appendToRelativePath is provided then use it
if($appendToRelativePath -ne $null)
{
$targetPath = [io.path]::Combine($relativePath, $appendToRelativePath)
}

$targetUri = new-object system.Uri($targetPath)
$relativeUri = $rootUri.MakeRelativeUri($targetUri)

return $relativeUri
}

# Visual Studio execution done via NuGet Package Manager
Function VSExecution($installPath, $package, $project)
{
#$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty)

# Get the msbuild version of the project and add the import
$msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1

# add a property for us to be able to reference the path where the package was installed
$relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib"

$msbuild.Xml.AddProperty("WebGreaseLibPath", $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar))

# save the project
$project.Save()
}

# Command line execution done by any external tool (For example, NuGetUpdater)
# $package - package id
# $project - parameter value is path to Project file in this case.
Function CommandLineExecution($installPath, $package, $project)
{
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Build")
[Reflection.Assembly]::LoadWithPartialName("System.Xml")
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")

# Get the msbuild version of the project and add the import
$projXDoc = [System.Xml.Linq.XDocument]::Load($project)

$defaultNameSpace = $projXDoc.Root.GetDefaultNamespace()

$propertyGroup = [System.Xml.Linq.XName]::Get("PropertyGroup", $defaultNameSpace.NamespaceName)
$webGreaseBuildLocation = [System.Xml.Linq.XName]::Get("WebGreaseLibPath", $defaultNameSpace.NamespaceName)

# add a property for us to be able to reference the path where the package was installed
$relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib"

$propGroupElement = $projXDoc.Root.Elements($propertyGroup) | Select-Object -First 1
IF ($propGroupElement -ne $null)
{
$newElement = new-object System.Xml.Linq.XElement($webGreaseBuildLocation, $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar))
$propGroupElement.Add($newElement)
}

# save the project
$projXDoc.Save($project)
}


IF ($project -is [system.string])
{
CommandLineExecution $installPath $package $project
}
ELSE
{
VSExecution $installPath $package $project
}
@@ -0,0 +1,63 @@
param($installPath, $toolsPath, $package, $project)

# Visual Studio execution done via NuGet Package Manager
Function VSExecution($toolsPath, $project)
{


$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty)

# Get the msbuild version of the project and add the import
$msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1

# now remove our property that points to this package path, "WebGreaseLibPath"
foreach ($property in $msbuild.Properties)
{
if ($property.Name -eq "WebGreaseLibPath")
{
$propertyToRemove = $property
}
}

if ($propertyToRemove -ne $null)
{
$propertyToRemove.Project.RemoveProperty($propertyToRemove)
$project.Save()
}

$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty)
}

# Command line execution done by any external tool (For example, NuGetUpdater)
# $project - parameter value is path to Project file in this case.
Function CommandLineExecution($toolsPath, $project)
{
[Reflection.Assembly]::LoadWithPartialName("System.Xml")
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")



$projXDoc = [System.Xml.Linq.XDocument]::Load($project)
$defaultNameSpace = $projXDoc.Root.GetDefaultNamespace()
$xmlReader = $projXDoc.CreateReader()
$namespaceManager = new-object System.Xml.XmlNamespaceManager($xmlReader.NameTable)
$namespaceManager.AddNamespace("my", $defaultNameSpace.NamespaceName)

$msnRfPackageElement = [System.Xml.XPath.Extensions]::XPathSelectElement($projXDoc.Root, "//my:WebGreaseLibPath", $namespaceManager)
if($msnRfPackageElement -ne $null)
{
$msnRfPackageElement.Remove()
}

# save the project
$projXDoc.Save($project)
}

IF ($project -is [system.string])
{
CommandLineExecution $toolsPath $project
}
ELSE
{
VSExecution $toolsPath $project
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.