我正在尝试在 .NET v3.5 项目中将 LINQ 与 Npgsql 2.0.11 一起使用。我正在尝试从数据表中进行第一个简单查询,我发现发送到 Postgresql 的语法是 SQL Server 语法,而不是 Pgsql 语法,导致服务器抛出语法错误。
按照文档的建议,我已将工厂生成添加到项目的 App.config 中:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
</DbProviderFactories>
</system.data>
这是一个片段:
DbProviderFactory factory = DbProviderFactories.GetFactory("Npgsql");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Server=mydbhost.example.com;UserId=postgres;Database=postgres";
table = new DataContext(connection).GetTable<Project.Model.MyEntity>();
我发现工厂是 Npgsql.NpgsqlFactory 的一个实例(似乎是正确的),连接是 Npgsql.NpgsqlConnection 的一个实例。这一切似乎都很好。但是,当我尝试 GetTable 时,生成的 SQL 语法包含方括号和各种其他 SQL Server 特定语法。
可能缺少什么?