2011-01-24 101 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