2012-08-22 62 views
2

首先 - 如果任何人有一個DB2工作的實體模型,您可以發佈它嗎?現在的解釋:將實體框架模型從SQL Server切換到DB2

我有一個開發環境,有一個SQL Server數據庫(僅用於開發)和uat /生產環境與DB2數據庫(或多或少相同的數據庫,只是在不同的平臺上)

使用Visual Studio 2010我可以成功地針對SQL Server數據庫生成實體框架模型,但不能針對DB2。我有DB2 9.7客戶端以及'Visual Studio的IBM數據庫插件',它允許我創建與DB2數據庫的連接並通過服務器瀏覽器連接到它,但是當我嘗試從DB2 Visual Studio生成模型時掛起,最終我得到一個空的模型。

因爲我可以從SQL Server生成模型,所以我想知道是否只是在環境切換時將web.config更改爲指向DB2而不是SQL Server的簡單切換。

是否有人在那裏使用DB2實體框架,如果可以,請發佈您的web.config,以便我可以嘗試切換提供程序?

+0

請參閱http://stackoverflow.com/questions/985912/using-linq-to-entity-framework-with-db2和http://stackoverflow.com/questions/2722906/how-to-get-the- ibm-db2-provider-to-work-with-entity-framework-4-0 – David

+1

根本沒有幫助。我已經看到了這些,他們與我的問題無關。我可以連接到DB2,但就像它在我的問題中所說的掛起,然後給我一個空的數據模型。如果您正在使用帶有實體框架的DB2,那麼請您發佈您的web.config,以便我可以看到如何重新配置​​以連接到DB2? – Mario

+0

如果有人關心,我相信db2世代失敗的原因之一是因爲db2數據庫非常古老(我認爲在他們添加.net提供程序之前的9.4版本)。他們已經升級了,但我相信其中一些架構仍然處於9.4之前的方式,因此打破了.NET的提供者。我認爲它在查看某些鍵等時會中斷,但對於所有應該起作用的CRUD操作。這是生成後切換的原因的兩倍。任何人都可以幫助我切換到DB2? – Mario

回答

0

需要做兩處更改才能切換實體模型以連接到DB2。取決於你有什麼版本,這顯然可能會改變。的.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.

相關問題