【问题标题】:Using sql server 2008 ado.net entity data model and postgresql connectionstring使用 sql server 2008 ado.net 实体数据模型和 postgresql 连接字符串
【发布时间】:2012-01-09 04:52:58
【问题描述】:

我正在使用 Visual Studio 2008、SQL Server 2008、asp.net mvc 2。

现在,我必须将我的数据库更改为 postgresql。我尝试了很多方法。但我做了一些不同的事情。

  1. 我创建了基于 SQL Server 2008 数据库的数据模型。
  2. 我在 postgresql 中有相同的结构化数据库。
  3. 所以我只是更改了实体数据模型的连接字符串,出现以下错误

来自指定 SSDL 的“System.Data.SqlClient”提供程序 工件与预期的“Npgsql”提供程序不匹配 连接字符串。

我该如何解决这个错误。

请让我知道这是否是正确的实施方式。

【问题讨论】:

    标签: entity-framework asp.net-mvc-2 postgis


    【解决方案1】:

    嗯,模型的物理层(元数据中的“SSDL”文件)当然会包含数据库模型的物理方面 - 包括该模型所基于的数据库提供程序.您不能只是简单地更改数据库连接字符串并完成它.....

    我看到两个选项:

    1. 我的首选解决方案:只需根据您的 Postgres 数据库重新创建 EF 模型 - 这是最干净的方法。如果你做得对,无论如何它都包含在你项目的一个程序集中,所以你可以或多或少地换一个新程序集来对抗 Postgres 而不是 SQL Server

    2. 在我看来是一个 hack:您可以将模型的元数据文件(*.ssdl、*.msl、*.csdl)写入磁盘,然后手动编辑 SSDL 文件以切换到Postgres 提供者。 我不知道这是否可行以及它可能产生的副作用!风险自负,并在备份副本上进行强>你的项目第一!

    【讨论】:

    • 我不能使用第一个选项,因为我们不能在 Visual Studio 中使用 postgresql 添加 edmx 文件。我正在使用 Npgsql 驱动程序。我什至尝试过 edmgen.exe 工具,但该工具不会生成视图。但是当我尝试第二个选项时,我替换了提供程序,但我得到了数据类型错误,因为 int 必须是 int4,nvarchar - varchar,.....
    猜你喜欢
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多