在.NET v3.5项目中,我试图在Npgsql 2.0.11中使用LINQ。我正在尝试数据表中的第一个简单查询,我发现发送给Postgresql的语法是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的一个实例(似乎是正确的),connection是Npgsql.NpgsqlConnection的一个实例。这一切似乎都很好。但是,当我尝试GetTable时,生成的SQL语法包含方括号和其他特定于Server的语法。
什么东西可能少了?
发布于 2011-01-25 02:47:43
DataContext
DataContext是LinqToSql。LinqToSql只适用于SqlServer。
也许你打算使用LinqToEntities和ObjectContext?
发布于 2011-01-25 18:02:57
如果要将LINQ用于Microsoft Server以外的RDBMS,则需要第三方程序集。DBLinq是一个为其他(开源)数据库提供LINQ功能的项目.
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/
https://stackoverflow.com/questions/4787255
复制相似问题