3

我正在尝试从 Linux 上的现有 PostgreSql 数据库为 Linq(或实体框架 6)生成 c# 类。我在一个 monodevelop 项目中安装了 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 类型“npgsql”。尝试使用 --with-dbconnection=TYPE 选项。

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

4

1 回答 1

2

目前 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 "端口=5432;编码=UTF-8;服务器=myDbServer;数据库=我的数据库;用户ID=我的用户;密码=我的密码;" --code=model.cs --language=c# --provider=PostgreSql --with-dbconnection="Npgsql.NpgsqlConnection, Npgsql, Version=2.2.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
    

  2. 将 Npgsql.dll 放在某个文件夹中,并将此文件夹添加到 MONO_PATH 环境变量。例如,将 Npgsql.dll 放入 /usr/local/lib/mono-additional-assemblies 然后

    设置 MONO_PATH=$MONO_PATH:/usr/local/lib/mono-additional-assemblies
    之后重新运行没有 --with-dbconnection 的 sqlmetal。应该管用。

于 2016-04-24T22:35:36.170 回答