4

我正在尝试在 .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 特定语法。

可能缺少什么?

4

2 回答 2

2

数据上下文

DataContext 是 LinqToSql。LinqToSql 仅适用于 SqlServer。

也许您打算使用 LinqToEntities 和 ObjectContext?

于 2011-01-25T02:47:43.580 回答
0

如果想要将 LINQ to SQL 用于 Microsoft SQL Server 以外的 RDBMS,则需要第三方程序集。DBLinq 是一个为其他(开源)数据库提供 LINQ to SQL 功能的项目。

http://code.google.com/p/dblinq2007/

可以按照此 Npgsql 博客上的文档将 Npgsql 配置为实体框架的数据库提供程序:

http://npgsql.com/index.php/2009/08/how-to-set-up-entity-framework-npgsql-part-1/

于 2011-01-25T18:02:57.820 回答