2009-06-11 5 views

Répondre

3

Que voulez-vous dire? Vous voulez quelque chose de spécifique à .NET 4.0 ou vous voulez savoir si nous pouvons nous connecter avec DB2 en utilisant .NET Framework ou non.

Si plus tard c'est le cas, oui vous pouvez. La classe OleDBConnection (qui est également disponible dans .NET 2.0 et .NET 3.5) possède une propriété ConnectionString dans laquelle vous définissez les détails du fournisseur. Vous devez simplement indiquer la chaîne de connexion du fournisseur pour votre fournisseur DB2 et vous devriez être OK.

17

Oui, la famille de pilotes IBM.Data.DB2 (que l'on trouve collectivement dans IBM.Data.DB2.dll, je crois) devrait fonctionner correctement avec .NET, vous permettant d'installer les pilotes sur votre machine de développement.

En outre, j'ai réussi à le faire fonctionner avec VS2010Beta et EF4Beta2, malgré l'absence de compléments Visual Studio pour VS2010 (à ce jour.) Si les pilotes sont déjà installés sur votre machine, vous venez de besoin d'ajouter une entrée dans le fichier machine.config pour clr .NET 4.0.

EDIT: Exemple de marquage machine.config ci-dessous. À l'origine, le fichier de configuration avait juste l'entrée DB Provider Factory du serveur SQL unique. En supposant que vous avez installé IBM.Data.DB2 sur votre machine, vous pouvez faire ce que j'ai fait et simplement ouvrir le fichier machine.config de votre 2.0 et copier/coller les entrées pour DB2. La divulgation complète, honnêtement, je ne sais pas si tous les 4 sont nécessaires, mais une installation propre de 9.7fp1 inséré tous les quatre entrées dans mon 2.0 machine.config, alors je suis allé de l'avant et les copiés à tous les 4.0 machine.config. Copier/coller, enregistrer le fichier, et redémarrez Visual Studio 2010 et vous devriez être en mesure de référencer le fournisseur dans votre EDMX avec les informations contenues dans la définition du modèle de stockage:

<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"> 

Notez que je suis intéressé à se connecter à une base de données informix, d'où la valeur ProviderManifestToken. Cependant, je ne pense pas que cela soit mot pour mot.

L'extrait de mon 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: derniers pilotes DB2 d'IBM - v9.7fp4 - ont grandement amélioré .NET 4.0 et VS2010 Add-In soutien. Son installation traitera automatiquement les entrées DbProviderFactories de machine.config 4.0. Si vous avez précédemment édité manuellement des entrées, comme décrit ci-dessus, vous voudrez les commenter/les supprimer dans le cadre de vos désinstallations v9.7fp3 (et antérieures).

+0

Pouvez-vous poster des instructions sur l'endroit où obtenir ces pilotes (liens, s'il vous plaît), puis comment les installer? J'ai installé la boîte à outils add-in pour VS2008, mais je ne peux toujours pas voir le fournisseur db2 dans la boîte de dialogue EF "Change Data Source". – camainc

+0

Oui, l'absence d'un add-in pour vs2010 est ce qui vous empêche de voir le fournisseur db2 dans la boîte de dialogue EF. J'ai fondamentalement pris un exemple de travail 2008, l'ai mis à jour en 2010, puis je me suis assuré que j'avais ajouté l'entrée nécessaire dans le fichier machine.config pour la version 4.0. J'ai peut-être même copié/collé l'entrée IBM db provider du fichier machine.config de v2.0 dans le fichier machine.config de v4.0. Je ne peux pas revérifier, car j'ai depuis installé vs2010 RTM et n'ai pas encore revu cette situation pour le moment. – kdawg

+0

Par la suite, je me suis connecté avec succès à une base de données Informix via IBM.Data.DB2 avec vs2010 RTM et EF4. Pour l'anecdote, j'utilise les derniers pilotes (v9.7 fp1) de DB2 et je devais copier/coller les informations DBProvider dans la machine.config – kdawg

3

J'essaie également d'utiliser Visual Studio 2010 pour se connecter à DB2 via Entity Framework. J'ai essayé ce que kdawg a fait: J'ai installé le package de pilotes IBM Data Server J'ai installé IBM Visual Studio 2008 addins

Je puis tenté de créer un modèle de données ADO.NET Entity dans mon projet 2008 et puis le convertir en 2010 mais la connexion à la base de données ne fonctionnerait pas. Je reçois l'erreur suivante: ERREUR [42968] [IBM] SQL1598N Une tentative de connexion au serveur de base de données a échoué en raison d'un problème de licence. SQLSTATE = 42968

Apparemment, selon ce , IBM ne fournit pas le pilote gratuitement. DB2 Connect doit être installé et sous licence. C'est environ 12 000 $.

J'ai décidé d'essayer autre chose.

+0

+1 pour un gratuit – walterhuang

1

vous pouvez également décompiler lib avec ildasm.exe à il.il

ensuite compiler en utilisant SDK 7 Ilasm.exe /RESOURCE=...\IL.res ... \ il.il/SORTIE = ... \ Ibm.Data.Db2.Net4.dll/DLL

Questions connexes