npgsql LINQ создает SQL Server SQL синтаксис

Я пытаюсь использовать LINQ с Npgsql 2.0.11 в проекте.NET v3.5. Я пытаюсь выполнить первый простой запрос из таблицы данных и обнаружил, что синтаксис, отправляемый в 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>();

Я обнаружил, что factory является экземпляром Npgsql.NpgsqlFactory (кажется правильным), а connection - это экземпляр Npgsql.NpgsqlConnection. Все это кажется хорошим. Однако, когда я пытаюсь получить GetTable, сгенерированный синтаксис SQL содержит квадратные скобки и различные другие специфические синтаксис SQL Server.

Чего не хватает?

2 ответа

DataContext

DataContext - это LinqToSql. LinqToSql предназначен только для SqlServer.

Возможно, вы хотели использовать LinqToEntities и ObjectContext?

Если кто-то хочет использовать LINQ to SQL для СУБД, отличной от Microsoft SQL Server, требуется сторонняя сборка. DBLinq - это проект, который обеспечивает функциональность LINQ to SQL для других (с открытым исходным кодом) баз данных.

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

Npgsql может быть настроен в качестве поставщика БД для Entity Framework, следуя документации в этом блоге Npgsql:

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

Другие вопросы по тегам