3

SQL 2005 Express Edition の 4 GB の制限を超えるデータ要件を持つ .NET ベースのアプリケーションを開発する必要があります。

社内の DBA の専門知識のために、特定の DB プラットフォーム (Oracle や SQL Server など) を使用する必要がある、同じアプリケーションの他の顧客が (将来) いる可能性があります。

質問

  1. どのRDBMSをお勧めしますか? 見た目からすると、主な選択肢は PostGreSQL、MySQL、または FireBird です。私はこれらからMYSQLの経験しかありません。

  2. どの ORM ツールを使用することをお勧めしますか? エンティティ フレームワークの外観は気に入っていますが、SQL Server 以外のプラットフォームがどの程度サポートされているかはわかりません。それが役立つ場合は、Framework の 3.5 バージョンを使用します。NHibernate などのツールを使用するという考えにはオープンです。一方で、より簡単になる場合は、独自のストアド プロシージャ/DAL コードを喜んで作成します。テーブルの数はそれほど多くありません (おそらく 30 ~ 35)。

4

6 に答える 6

6

postgres で NHibernate を使用することをお勧めします。

すべてのテストと開発を sqlite で行うことができるため、開発マシンで postgres のインスタンスを実行する必要はありません。

mysql と postgres のどちらを使用するかわからない場合は、両方を試してみることをお勧めします。Postgres はより準拠していますが、mysql に慣れている (そして ORM を使用している) 場合は、おそらくそれを使用する必要があります。

于 2008-11-03T18:11:49.037 に答える
2

MyGenerationSoftwareNHibernateを使用して、mySQLデータベースのクラス/ORの詳細を自動生成しました。MyGenerationSoftwareの良いところは、データベースをピアリングして、そこからクラスを構築できることです。

MySQLは(私の意見では)本番品質のデータベースであり、 Slashdotを含む多くの商用サイトがmySQLを使用しています。

NHibernateの場合、セットアップが完了すると、XMLを簡単に編集して、別のデータベースを指すようにすることができます。データベースを切り替えるために必要なのはそれだけです。

于 2008-11-03T18:44:28.627 に答える
2

私は最近、.NET の可能な ORM ソリューションを多数評価してきました。もし私があなただったら、MS SQL 以外のものを使用する場合は Entity Framework のルートには行かないでしょう - 概念的なエンティティ モデルの問題は別として (これは一般的なものであることが意図されていますが、このモデルでシーケンスのようなものをキャッチする方法はありません)。あなたはサード パーティのデータベース ドライバー プロバイダーの開発者に強く依存しています。私にとっては、この方程式の多くの変数に間違いなく依存しています。

一方、Hibernate では、コードの汎用性と、選択した DB 方言に固有の両方を使用できます。例えば。そのような属性を Id プロパティに使用できます。

[Generator( Class = "native")]
//...
public virtual int CustomerId {get; set; }

SQL Server NH で "Native" ジェネレーター オプションを表示すると、それが ID フィールド (自動インクリメント) であると見なされ、Oracle の場合、このプロパティは同じ名前のシーケンスを使用すると見なされます (必要に応じてシーケンス名を変更できます)。

また、ほんの数日前に、MS は LINQ to SQL エントリ レベルの ORM を完全に廃止しました。彼らが Entity Framework で同じことをしないかどうかはわかりません。オープンソースの NHibernate ではそのような問題はありません。

特定のニーズを知らないDBを提案することはできませんが、フリーソフトウェア(Oracleを除く)を使用したい場合で、MySqlの経験がまだない場合は、MySqlよりも強力なPostgresを試してください.

とにかく、NHibernate を使用すると、後から DB をあまり苦労せずに切り替えることができます。

NHibernate でサポートされているデータベース方言のリストは次のとおりです: http://www.hibernate.org/361.html

編集:すでにMySQLを知っていることに気づきました-とにかくNHibernateでDBを直接使用するつもりはないので、最初にMySqlから始めてORM部分に集中する必要があると思います-正確にNHibernateを制御する方が簡単ですDBでやっています。

ただし、NHibernate では、最初にデータ クラスを記述し、DB スキーマを自動的に生成できることを知っておく必要があります。このルートに従うと (DDD の観点からは良い考えです)、DB レイヤーは実際に透過的になります。

于 2008-11-03T18:28:59.673 に答える
1

なぜファイヤーバードではないのですか?Firebird には、他の無料データベースよりも多くの機能があります。また、NHibernate と Entity Framework でサポートされています。また、Firebird はアプリケーションに組み込むことができ、ライセンス モデルは MySQL よりも制限が緩くなっています。

あくまで私の勝手な意見です。

于 2009-06-20T23:45:26.543 に答える
0

Llbgenは、ORMマッパーに非常に適しています。最初はかなりの学習曲線がありますが、一度コツをつかめばそれはとても良いことです。ここで説明したデータベースに加えて、さらにいくつかのデータベースをサポートします。

于 2008-11-03T18:37:10.313 に答える
0

EntityORM - http://entityorm.uuuq.comは、あなたのニーズを満たすだけではありません。

于 2009-06-26T14:36:08.023 に答える