2

まず、DB2 が動作するエンティティ モデルを誰かが持っている場合は、投稿していただけますか? そして今、説明のために:

SQL Server データベース (開発用のみ) を持つ開発環境と、DB2 データベース (多かれ少なかれ同じデータベース、異なるプラットフォーム上) を持つ uat/運用環境があります。

Visual Studio 2010 を使用すると、SQL Server データベースに対してエンティティ フレームワーク モデルを正常に生成できますが、DB2 に対しては生成できません。DB2 9.7 クライアントと「IBM Database Add-ins for Visual Studio」がインストールされているため、DB2 データベースへの接続を作成し、サーバー エクスプローラー経由で接続できますが、DB2 Visual Studio からモデルを生成しようとすると、ハングし、最終的に空のモデルを取得します。

SQL Server からモデルを生成できるので、環境が切り替わったときに SQL Server ではなく DB2 を指すように web.config を変更するだけで簡単に切り替えられるかどうか疑問に思っています。

DB2 でエンティティ フレームワークを使用している人はいますか?もしそうなら、あなたの web.config を投稿してください。プロバイダーを切り替えてみることができますか?

4

1 に答える 1

0

エンティティ モデルを切り替えて DB2 に接続するには、2 つの変更が必要です。あなたが持っているもののバージョンに応じて、これは明らかに変わるかもしれません。.edmx の変更:

<!-- SQL SERVER <Schema Namespace="Models.myDb2Model.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008"                  xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">-->
                <Schema Namespace="Models.myDb2Model.Store" Alias="Self" Provider="IBM.Data.DB2"          ProviderManifestToken="DB2, 09.01.0005, 0, 0" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">

そして、ここに web.config の変更があります:

 <!-- SQL SERVER<add name="db2Connection" 
     connectionString="metadata=res://*/Models.db2Entities.csdl|res://*/Models.db2Entities.ssdl|res://*/Models.db2Entities.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=mySqlServerDb;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> -->

  <add name="db2Connection" 
       connectionString="metadata=res://*/Models.db2Entities.csdl|res://*/Models.db2Entities.ssdl|res://*/Models.db2Entities.msl;provider=IBM.Data.DB2;provider connection string=&quot;Database=myDb2Db;User ID=myUserId;Password=MyPassword;Server=myServerName:myPort;DBName=myDbName;ConcurrentAccessResolution=Currentlycommitted;CurrentPackageSet=myCurrentPackageSet&quot;" 
       providerName="System.Data.EntityClient" />

編集:明らかに、マシンはDB2に接続するように設定する必要があり、VS用の適切なクライアントとデータベースのアドインが必要です。

于 2012-08-28T18:36:45.090 に答える