Универсальный разработчик SQL.NET

Я ищу способ записать SQL-оператор в C#, предназначающемся для различных поставщиков. Типичным примером дифференциации SQL-операторов является ПРЕДЕЛ в PostgreSQL по сравнению с TOP в MSSQL.

Единственный путь состоит в том, чтобы решить синтаксис SQL как два выше для записи операторов "if", в зависимости от которого поставщика пользователь выбирает, или использующий операторы выгоды попытки в качестве управления потоком (ПРЕДЕЛ не работал, я попробую TOP вместо этого)? Я видел, что LINQ Берет метод, но я задаюсь вопросом, можно ли сделать это без LINQ?

Другими словами, C# имеет некоторый универсальный класс Поставщика SQL, что мне не удалось найти, что это может использоваться?

7
задан Patrick 30 May 2010 в 10:42
поделиться

4 ответа

Entity Framework может работать с разными базами данных. Это позволит вам писать операторы LINQ, которые будут работать с обеими базами данных. Вам нужно будет найти поставщика postgresql для Entity Framework. Есть несколько вариантов на выбор.

Надеюсь, это поможет.

7
ответ дан 6 December 2019 в 15:19
поделиться

Присоединяюсь к идее Марка Тидда. Если вы не хотите Linq, создайте отдельные классы DAL для каждого провайдера, или используйте хранимые процедуры, которые будут реализованы в каждой БД.

1
ответ дан 6 December 2019 в 15:19
поделиться

Я не думаю, что существует «универсальный поставщик sql».

В нашем магазине нам необходимо поддерживать как DB2, так и SQL Server, поэтому мы решили реализовать шаблон слоев, создающий классы модели, доступа к данным и бизнес-логики. Уровень доступа к данным обрабатывает соединение с различными СУБД и загружает классы модели, передавая их обратно в бизнес-логику. Бизнес-логика и классы модели не знают, откуда уровень доступа к данным получает данные.

Различия в SQL обрабатываются, поскольку уровень доступа к данным вызывает хранимые процедуры в базе данных. У нас есть хранимые процедуры, реализованные с соответствующим синтаксисом в обеих системах.Если нам нужно перейти в другую базу данных, все, что нам нужно сделать, это реализовать необходимые процедуры в новых СУБД, и все должно просто работать.

3
ответ дан 6 December 2019 в 15:19
поделиться

Есть DBLinq :

LINQ-провайдер для Oracle, PostgreSQL, MySQL, Ingres, SQLite, Firebird и ... SQL Server (C # 3.0)

При создании запроса с использованием LINQ в SQL можно просмотреть сгенерированный SQL и сохранить его.

Однако это не соответствует вашему требованию «без использования LINQ». Если у вас есть LINQ, почему бы не использовать его?

3
ответ дан 6 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: