我正在尝试从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
之后要放什么答案 0 :(得分:2)
目前,Npgsql驱动程序未随Mono(http://www.mono-project.com/docs/about-mono/releases/4.0.0/)一起发布。很难解决这个问题:
将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"
将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。应该工作。