2009-07-29 14 views
2

私はビジネスアプリケーション(asp.net)で作業しています。今私はSQL Serverを使用しています。しかし、私は少なくともmysqlとpostgresqlをサポートします。 今後の頭痛を避けるために考慮すべき問題は何ですか?特にデータ型(列型)について。例えば。私はビット列はいくつかのdbsでサポートされていないと思うので、私はtinyintを使用しますか?データベースの移植性(SQLサーバーからmysql、postgresqlへ)

私は主にプレーンなSQL(エンティティフレームワークやlinqなどはありません)を使い、できるだけシンプルにしています。 私はトリガーなどのものを使用していません。 私はストアドプロシージャを使用しますが、私は必要があればプレーンSQLに置き換えることができます。

答えて

1

あなたの唯一の希望は、Remus Rusanuが示唆するように、データアクセスを適切なデータアクセスレイヤに分離することです。データアクセスレイヤーは、残りのコードとの一貫したインタフェースを持つことができ、各DBプラットフォームの他のバージョンでは変更できます。 SQLをかなり公平に保つことは役に立ちますが、実際にはSQLコードの1つの本体を書いてどこでも動作させることはできません(SQL標準はうまく実装されていません)。

0

コンクリートの代わりにIDbConnectionIDbCommandIDataReaderという抽象的なコードを使用してください。また、互換性のある構文のみを使用するためには、SQL文を常にチェックしておく必要があります。

OdbcConnection/OdbcCommandコンポーネントを使用して接続し、汎用ODBC構文と汎用ODBCデータ型(つまり、{fn SUBSTRING(...)}もの、別名the ODBC Escaped Syntax)を使用することもできます。

私がやりたいことは、データアクセスを隔離し、バックエンドごとに特定のDALクラスを作成することです。 XMLとXSLTを使ってDALコードを生成します。私のブログのthis the technique of integrating XSLT code generationに似ていますが、XSLTは各バックエンド固有のコード専用です。

関連する問題