2009-07-29 4 views
2

Я работаю над бизнес-приложением (asp.net). Сейчас я использую сервер sql. Но я планирую поддерживать по крайней мере mysql и postgresql в будущем. Какие проблемы я должен учитывать, чтобы избежать головных болей в будущем? Особенно о типах данных (типы столбцов). Например. Я думаю, что столбец BIT не поддерживается на некоторых dbs, поэтому я использую tinyint?Переносимость базы данных (sql server to mysql, postgresql)

В основном я использую простой sql (без рамки сущности или linq и т. Д.) И стараюсь держать его как можно проще. Я НЕ использую такие вещи, как триггеры и т. Д. Я использую хранимые процедуры, но при необходимости их можно заменить обычным sql.

ответ

1

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

0

Удостоверьтесь, что вы пишете весь свой код клиента, используя аннотация IDbConnection, IDbCommand, IDataReader вместо бетона. Вам также придется постоянно держать свои SQL-запросы в проверке, чтобы убедиться, что вы используете только совместимый синтаксис.

Вы также можете попробовать подключение через OdbcConnection/OdbcCommand компонентов и использовать общий синтаксис ODBC и тип данных, общий ODBC (то есть. {fn SUBSTRING(...)} материала, он же. the ODBC Escaped Syntax).

В качестве альтернативы я предпочитаю изолировать доступ к данным и создавать определенные классы DAL для каждой задней части. Я использую XML и XSLT для генерации кода DAL. Подобно this the technique of integrating XSLT code generation из моего блога, но с XSLT, специально предназначенным для каждого конкретного кода.

1

Рассмотрите (с некоторыми издержками с точки зрения обучения кривая) принятие модели домена и уровня доступа к данным на основе OR/M, подобного NHibernate (https://www.hibernate.org/343.html)

 Смежные вопросы

  • Нет связанных вопросов^_^