Thursday, August 30, 2012

Visual Studio Oracle .Net Framework Data Provider Error

Issue: Visual Studio 2012 Oracle .net Framework Data Provider not installed.

Machine: Visual Studio 2012 11.0.50727.1RTMREL, Windows 7 64bit SP1, Oracle 10.2g, and Oracle 11.2g (4.112.3.0).

This may applies to Visual Studio 201, and previous versions.

There are many other suggestions.  However, on my machine, this is what I had to do.

Remove extra  <DbProviderFactories />  tag from machine.config.

I think, Visual Studio 2012 is a 32bit program.  Therefore, default actions that's on IDE would use .NET 32bit framework.  Thus, you need to edit appropriate Microsoft.NET\Framework\....\machine.config file.  Editing web.config won't do because IDE doesn't use web.config.  

Remember, there are multiple machine.config files in different sub directories under \Framework directory.

This is what mine has...


<DbProviderFactories>
    <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    <add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
    <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>

Other Information
Environment Variables
TNS_NAMES : C:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN

PATH: C:\Oracle\product\11.2.0.3.15;C:\Oracle\product\11.2.0.3.15\bin;C:\Oracle\product\10.2.0\client_1;C:\Oracle\product\10.2.0\client_1\BIN;

I didn't have ORACLE_HOME environment variable.

Also, Here is my Windows\assembly


I got this answer from help from Juan.

TAGS
Visual Studio 2012 Oracle .Net Framework Data Provider not installed Error not found ODP.NET 

Thursday, December 8, 2011

Regular Expression

replacing any "," with a blank


var queries = new Array();


console.log(queries.toString().replace(/^,|,$|[^0-9]+,|,[^0-9]+/g, ' '));

Thursday, December 1, 2011

Single controller action populating views and partial views.


In order for these views to be updated with a single controller action method, data sets need to be share a same parent object.  A controller action would in-turn resembles this.

public ActionResult GetDataXXX()
{
    var oActionResultData = new CMS()
    {
        VegieView = GetVegieViewData(params1),
        ProteinView = GetProteinViewData(params2),
        ItemView = GetItemViewData(param3)
    };
}


Now, views do not need a model declaration.  Instead, declare a variable that can hold a data set that can be used in a view like the below in each view.

@{  var result = Model.VegieView as IEnumerable}
 
@{  var result = Model.ProteinViewas IEnumerable}
 
@{  var result = Model.ItemViewas IEnumerable}

You can then iterate through data (set) packages to display contents in each view.

For example, for the VegieView, you can do ....

@{ var oVegies = Model.Vegies as IEnumerable<Core.AppView.MVC.SearchServiceReference.VegiePackage>; }
@foreach (var x in oVegies )
{
    foreach (var y in x.Vegies)
    {
        <div>@Html.DisplayFor(j=> y.Name)<div>
    }
}

Repeat this with the rest of the partial views, you got yourself a MVC page that calls a single controller action that can update multiple views.
:-)  neat!