npgsql LINQ创建SQL Server sql语法

我正在尝试在.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 =“.用于Postgresql的Net Framework数据提供程序”type =“Npgsql.NpgsqlFactory,Npgsql,Version = 2.0.11.0,Culture = neutral,公钥= 5d8b90d52f46fda7\” /> < / DbProviderFactories> < /system.data\u0026gt; 这是一个片段:

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

可能会遗漏什么?

最佳答案

DataContext

DataContext是LinqToSql. LinqToSql仅适用于SqlServer.

也许您打算使用LinqToEntities和ObjectContext?

点赞