使用 sqlmetal for npgsql 生成 linq 类



我正在尝试从Linux上的现有PostgreSQL数据库为Linq(或Entity Framework 6)生成c#类。我在一个 monodevelopment 项目中安装了 npgsql 和 Entity Framework 6,并且能够使用纯 SQL 查询数据库。

但是当我尝试使用 Sqlmetal 生成 Linq 类时:

sqlmetal -c "Port=5432;Encoding=UTF-8;Server=myDbServer;Database=MyDatabase;UserId=myUser;Password=mypassword;" --code=model.cs --language=c# --provider=PostgreSql

我收到以下错误:

sqlmetal:无法加载 databaseConnectionType type 'npgsql'。 尝试使用 --with-dbconnection=TYPE 选项。

我不知道在 --with-dbconnection 之后放什么

目前 Npgsql 驱动程序不与 Mono (http://www.mono-project.com/docs/about-mono/releases/4.0.0/) 一起分发。解决这个问题的可能性很少:

  1. 将 Npgsql.dll 安装到 GAC 中。为此,您必须使用命令:

    sudo gacutil -i Npgsql.dll Npgsql.dll
    可以从这里检索:https://github.com/npgsql/npgsql/releases/download/v2.2.5/Npgsql-2.2.5-net45.zip。(以版本2.2.5.0为例,也可以使用不同的版本(例如v3)。之后你可以尝试重新运行sqlmetal
    sqlmetal -c "Port=5432;编码=UTF-8;服务器=myDbServer;数据库=MyDatabase;UserId=myUser;Password=mypassword;" --code=model.cs --language=c# --provider=PostgreSql --with-dbconnection="Npgsql.NpgsqlConnection, Npgsql, Version=2.2.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
  2. 将 Npgsql.dll 放在某个文件夹中,并将此文件夹添加到 env 变量MONO_PATH。例如,将 Npgsql.dll 放入/usr/local/lib/mono-additional-assemblies 中,然后

    设置 MONO_PATH=$MONO_PATH:/usr/local/lib/mono-additional-assemblies
    之后重新运行 sqlmetal,不带 --with-dbconnection。应该工作。

最新更新