2009-06-11 39 views

Respuesta

3

¿Qué quiere decir? Desea algo específico para .NET 4.0 o desea saber si podemos conectarnos con DB2 utilizando .NET Framework o no.

Si más tarde es el caso, sí puede. La clase OleDBConnection (que también está disponible en .NET 2.0 y .NET 3.5) tiene una propiedad ConnectionString en la que establece los detalles del proveedor. Simplemente debe proporcionar la cadena de conexión del proveedor para su proveedor de DB2 y debe estar bien.

17

Sí, la familia de controladores IBM.Data.DB2 (encontrados colectivamente en IBM.Data.DB2.dll, creo) debería funcionar bien con .NET, siempre que instale los controladores en su máquina de desarrollo.

Además, pude hacer que funcione con éxito con VS2010Beta y EF4Beta2, a pesar de la falta de complementos de Visual Studio para VS2010 (a partir de esta fecha). Si los controladores ya están instalados en su máquina, simplemente necesita agregarle una entrada en el archivo machine.config para clr de .NET 4.0.

EDITAR: Ejemplo de marcado de máquina.config siguiente. Originalmente, el archivo de configuración solo tenía la entrada única de proveedor de DB de servidor SQL. Suponiendo que tiene instalado IBM.Data.DB2 en su máquina, puede hacer lo que hice y simplemente abrir el archivo machine.config de su 2.0 y copiar/pegar las entradas para DB2. La revelación completa, honestamente no sé si se requieren los 4, pero una instalación limpia de 9.7fp1 insertó las cuatro entradas en mi máquina 2.0.config, así que seguí y las copié a 4.0 machine.config. Copiar/pegar, guardar el archivo y reinicie Visual Studio 2010 y que debe ser capaz de hacer referencia al proveedor en su EDMX con la información en la definición del modelo de almacenamiento:

<edmx:StorageModels> 
    <Schema xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl" Namespace="BlahModel.Store" Alias="Self" Provider="IBM.Data.DB2" ProviderManifestToken="IDS/UNIX64, 11.50.0000"> 

Tenga en cuenta que estoy interesado en conectarse a una base de datos informix, de ahí el valor ProviderManifestToken. Sin embargo, no creo que sea obligatorio al pie de la letra.

El fragmento de mi 4.0 machine.config:

<system.data> 
    <DbProviderFactories> 
     <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.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> 
     <add name="IBM DB2 .NET Data Provider" invariant="IBM.Data.DB2" description="IBM DB2 Data Provider for .NET Framework 2.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" /> 
     <add name="IBM Informix .NET Data Provider" invariant="IBM.Data.Informix" description="IBM Informix Data Provider for .NET Framework 2.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix, Version=9.0.0.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" /> 
     <add name="IBM DB2 .NET Data Provider 9.7.1" invariant="IBM.Data.DB2.9.7.1" description="IBM DB2 Data Provider 9.7.1 for .NET Framework 2.0" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2.9.7.1, Version=9.7.1.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" /> 
     <add name="IBM Informix .NET Data Provider 9.7.1" invariant="IBM.Data.Informix.9.7.1" description="IBM Informix Data Provider 9.7.1 for .NET Framework 2.0" type="IBM.Data.Informix.IfxFactory, IBM.Data.Informix.9.7.1, Version=9.7.1.2, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />   
    </DbProviderFactories> 
</system.data> 

EDIT 2: últimos controladores DB2 de IBM - v9.7fp4 - han mejorado en gran medida .NET 4.0 y VS2010 Complemento En apoyo. Su instalación manejará automáticamente las entradas machine.config 4.0 de DbProviderFactories. Si previamente editó las entradas manualmente, como se describió anteriormente, querrá comentarlas/eliminarlas como parte de su desinstalación v9.7fp3 (y anterior).

+0

¿Puede publicar instrucciones sobre dónde obtener esos controladores (enlaces, por favor) y luego cómo instalarlos? Instalé el kit de herramientas complementario para VS2008, pero todavía no puedo ver el proveedor de db2 en el cuadro de diálogo EF "Cambiar origen de datos". – camainc

+0

Sí, la falta de un complemento para vs2010 es lo que le impide ver el proveedor db2 en el cuadro de diálogo EF. Básicamente tomé un ejemplo de trabajo 2008, lo actualicé a 2010, y luego me aseguré de haber agregado la entrada necesaria en machine.config para v4.0. Incluso podría haber copiado/pegado la entrada del proveedor de base de datos de IBM de machine.config de v2.0 en machine.config de v4.0. No puedo volver a verificarlo, ya que desde entonces instalé vs2010 RTM y aún no volví a visitar esta situación. – kdawg

+0

Como seguimiento, desde entonces me he conectado con éxito a una base de datos de Informix a través de IBM.Data.DB2 con vs2010 RTM y EF4. Para el registro, estoy usando los controladores más recientes (v9.7 fp1) de DB2 y aún tuve que copiar/pegar la información de DBProvider en machine.config – kdawg

3

También estoy tratando de usar Visual Studio 2010 para conectarme con DB2 a través de Entity Framework. Probé lo hizo kdawg: he instalado el paquete de controladores de IBM Data Server he instalado el IBM Visual Studio 2008 complementos

entonces he tratado de crear un modelo de datos de entidad de ADO.NET en mi proyecto de 2008 y después convertirlo a 2010 pero la conexión a la base de datos no funcionaría. Recibo el siguiente error: ERROR [42968] [IBM] SQL1598N Ha fallado un intento de conectarse al servidor de la base de datos debido a un problema de licencia. SQLSTATE = 42968

Al parecer, según este forum, IBM no proporciona el controlador de forma gratuita. Debe tener DB2 Connect instalado y con licencia. Esto es alrededor de $ 12,000.

Decidí probar algo más.

+0

+1 por no gratis – walterhuang

1

También se puede descompilar lib con ildasm.exe a il.il

A continuación, compile utilizando SDK 7 ilasm.exe /RESOURCE=...\IL.res ... \ il.il/SALIDA = ... \ Ibm.Data.Db2.Net4.dll/DLL

Cuestiones relacionadas