Quantcast
Channel: Oracle, MySQL, Sybase, Informix and other databases
Viewing all articles
Browse latest Browse all 1350

No Entity Framework provider found for 'IBM.Data.DB2' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file

$
0
0

I am getting below error while trying to connect Informix through Entity Framework:

No Entity Framework provider found for 'IBM.Data.DB2' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.


Here are the steps followed:

1)      After installation of VS 2012

2)      DB Server Client (v 9.7.5)- This installed in C:\Program Files\ibm\SQLLIBfolder

3)      Didn’t have VS 2012 DB2 add-ins, as I can’t install them in Client environment and I guess these are not mandatory.

4)      Tested the connection using:

C:\Program Files\ibm\SQLLIB\BIN>testconn40.exe Database=supplierportal;UserID=informix;password=*****;Server=server:12504;

C:\Program Files\IBM\SQLLIB\BIN>testconn40.exe server=servername:12345;database=SupplierPortal; userid

=informix;password=*****;

Step 1: Printing version info

        .NET Framework version: 4.0.30319.17929
       64-bit

        DB2 .NET provider version: 9.7.4.4
        DB2 .NET file version: 9.7.5.4
        Capability bits: ALLDEFINED
        Build: 20111018
        Factory for invariant name IBM.Data.DB2 verified
        Factory for invariant name IBM.Data.Informix verified
        IBM.Data.Informix from DbFactory is the Common Informix .NET provider
        Elapsed: 1.5468552

Step 2: Validating db2dsdriver.cfg against db2dsdriver.xsd schema file
        File C:\ProgramData\IBM\DB2\DB2COPY1\cfg\db2dsdriver.cfg  missing. Nothing to validate
        Elapsed: 0.0156248

 

Step 3: Connecting using "server=servername:12345;database=SupplierPortal;userid=informix;password=*****"
        Server type and version: IDS 11.50.0000
        Elapsed: 1.6249792

Step 4: Selecting rows from informix.systables to validate existence of packages
   SELECT * FROM informix.systables
        Elapsed: 0.3437456
Step 5: Calling GetSchema for tables to validate existence of schema functions
        Elapsed: 0.5937424

Test passed.

5)      Created small solution to  test with entity framework:

Here is important classes:

DbContext:

    public partial class SupplierPortalContext : DbContext

    {

        static SupplierPortalContext()

        {           

            Database.SetInitializer<SupplierPortalContext>(null);

        }

 

        public SupplierPortalContext()

            : base("Name=SupplierPortalConnection")

        {

        }

 

        public DbSet<Pouch> Pouches { get; set; }

 

        protected override void OnModelCreating(DbModelBuilder modelBuilder)

        {

            modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.TableAttributeConvention>();

   

            modelBuilder.Configurations.Add(new PouchMap());           

}

}

 

Model Class:

[Table("pouch")]

    public partial class Pouch

    {

        public int PouchId { get; set; }

        public string BookingNum { get; set; }

    }

 

Mapping:

public class PouchMap : EntityTypeConfiguration<Pouch>

    {

        public PouchMap()

        {

            // Primary Key

            this.HasKey(t => t.PouchId);

 

            // Properties

            this.Property(t => t.PouchId)

                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

 

            this.Property(t => t.BookingNum)

                .HasMaxLength(50);

 

            // Table & Column Mappings

            this.ToTable("Pouch");

            this.Property(t => t.PouchId).HasColumnName("PouchId");

            this.Property(t => t.BookingNum).HasColumnName("BookingNum");

       }

    }

 

Added  below code in main function to test the connection:

SupplierPortalContext ec = new SupplierPortalContext();

Console.WriteLine(ec.Database.Exists());

 

Throwing below error in second line:

 

No Entity Framework provider found for 'IBM.Data.DB2' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

 

Other details:

DbProviderFactories section from machine.config file:

 

64 bit

<DbProviderFactories>

      <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM Informix .NET Data Provider" invariant="IBM.Data.Informix" description="IBM Informix Data Provider for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM DB2 .NET Data Provider 9.7.5" invariant="IBM.Data.DB2.9.7.5" description="IBM DB2 Data Provider 9.7.5 for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2.9.7.5, Version=9.7.5.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM Informix .NET Data Provider 9.7.5" invariant="IBM.Data.Informix.9.7.5" description="IBM Informix Data Provider 9.7.5 for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix.9.7.5, Version=9.7.5.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

    </DbProviderFactories>

 

32 bit

<DbProviderFactories>

  <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM Informix .NET Data Provider" invariant="IBM.Data.Informix" description="IBM Informix Data Provider for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix, Version=9.7.4.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM DB2 .NET Data Provider 9.7.5" invariant="IBM.Data.DB2.9.7.5" description="IBM DB2 Data Provider 9.7.5 for .NET Framework 4.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2.9.7.5, Version=9.7.5.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

      <add name="IBM Informix .NET Data Provider 9.7.5" invariant="IBM.Data.Informix.9.7.5" description="IBM Informix Data Provider 9.7.5 for .NET Framework 4.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix.9.7.5, Version=9.7.5.4, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />

    </DbProviderFactories>

 

Added Entry at entityframework section in Config file:

 <defaultConnectionFactory type="IBM.Data.DB2.Entity.DB2ConnectionFactory, EntityFramework, EntityFramework" />

 

Note:

I have used similar set up in my local machine (I have installed Informix dev server and DB client 10.* version.).

It is working without any issues.

Client keen on NHibernate, but we insisted on EntityFramework, but never thought of end up in this issue.

I really appreciate your efforts on this issue. 

<defaultConnectionFactory type="IBM.Data.DB2.Entity.DB2ConnectionFactory, EntityFramework, EntityFramework" />


Viewing all articles
Browse latest Browse all 1350

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>