使用sqlmetal为npgsql生成linq类

时间:2016-04-23 18:16:48

标签: c# linq monodevelop npgsql sqlmetal

我正在尝试从Linux上的现有PostgreSql数据库为Linq(或Entity Framework 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

之后要放什么

1 个答案:

答案 0 :(得分: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 "Port=5432;Encoding=UTF-8;Server=myDbServer;Database=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放在某个文件夹中,并将此文件夹添加到MONO_PATH env变量中。例如,将Npgsql.dll放入/ usr / local / lib / mono-additional-assemblies然后

    set MONO_PATH=$MONO_PATH:/usr/local/lib/mono-additional-assemblies
    之后重新运行没有--with-dbconnection的sqlmetal。应该工作。