2011-01-24 73 views
4

我想在.NET v3.5项目中使用带有Npgsql 2.0.11的LINQ。我正在尝试从数据表开始我的第一个简单查询,并且我发现发送到Postgresql的语法是SQL Server语法,而不是Pgsql语法,导致服务器抛出语法错误。npgsql LINQ创建SQL Server sql语法

我已经加入了工厂代项目的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>

^h ERE是一个片段:

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特定语法。

什么可能会丢失?

回答

2

的DataContext

DataContext的是LinqToSql。 LinqToSql仅适用于SqlServer。

也许你打算使用LinqToEntities和ObjectContext?

0

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

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

可以Npgsql的配置为DB提供程序的实体框架在这个博客Npgsql的文档如下:

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

+0

你困惑。 Linq不是实体框架的一部分。 – 2011-01-25 18:10:50