【问题标题】:Switching entity framework model from SQL Server to DB2将实体框架模型从 SQL Server 切换到 DB2
【发布时间】:2012-08-22 16:47:31
【问题描述】:

首先 - 如果有人有一个可以运行 DB2 的实体模型,你能把它贴出来吗?现在解释一下:

我有一个具有 SQL Server 数据库(仅用于开发)的开发环境和具有 DB2 数据库的 uat/生产环境(或多或少相同的数据库,只是在不同的平台上)

使用 Visual Studio 2010,我可以成功地针对 SQL Server 数据库生成实体框架模型,但不能针对 DB2。我安装了 DB2 9.7 客户端以及“IBM Database Add-ins for Visual Studio”,它允许我创建到 DB2 数据库的连接并通过 Server Explorer 连接到它,但是当我尝试从 DB2 Visual Studio 生成模型时挂起,最终我得到一个空模型。

由于我可以从 SQL Server 生成模型,我想知道当我的环境切换时,只需将 web.config 更改为指向 DB2 而不是 SQL Server 是否是一个简单的切换。

是否有人在 DB2 中使用实体框架,如果有,请发布您的 web.config,以便我可以尝试切换提供程序?

【问题讨论】:

  • 一点帮助都没有。我已经看过这些,它们与我的问题无关。我可以连接到 DB2,但就像它在我的问题中所说的那样,它挂起然后给了我一个空的数据模型。如果您正在使用带有实体框架的 DB2,您能否发布您的 web.config,以便我了解如何重新配置​​以连接到 DB2?
  • 如果有人关心的话,我相信 db2 生成失败的原因之一是因为 db2 数据库非常旧(我认为是 9.4 之前的版本,他们添加了 .net 提供程序)。它们已经升级,但我相信某些架构以 9.4 之前的方式保留,因此破坏了 .net 提供程序。我认为在查看某些键等时它会中断,但对于所有 CRUD 操作它应该可以工作。这是我生成后才切换的双重原因。谁能帮我切换到 DB2?

标签: .net visual-studio-2010 entity-framework web-config db2


【解决方案1】:

要切换实体模型以连接到 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 安装适当的客户端和数据库插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多