2012-01-28 17 views
2

私はinformixデータベースでASP.NETを使用しています。適切なORMの選択についての混乱?

は、私は接続、CRUD操作、取引、など....今

を処理するために書かれたクラスのセットを使用して、私はこれらのクラスは最良の選択ではないと感じ、あまりパフォーマンスは、多くのを取ります時間と多くの欠点があります。


私はORMを使用したいが、私は自分のWebアプリケーション(ASP.NET、Informixのを)合ったものを選択する方法がわかりません。

便利なORMを選択してください。

私は、nHibernate、Entity Framework、LINQ To SQL、Open Access(Telerikコンポーネント)の間で混乱しています。

注:私は最近の比較をしたいので、Visual Studio 2012を使用します。

+6

.NETのORM:http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

答えて

5

Fluent NHibernateの使用について考えましたか?それについてのウェブ上の豊富な記事があります。そのような記事の1つはconverting to Fluent NHibernate sessionmanagerです。

EDIT:

は、自分の状況を考えて、私は、私は通常、どのように考えるかを教えてくれます。最初に、私はゲートウェイ層に何をしたいのかを正確に考えます(これは永続媒体と話すために使用する層です)。さて、ほとんどの人は、データベースと話をしたい、あるいは物事を挿入して更新したいと言っています。しかし、最近、私はこれでは不十分だと分かった!途中でこれらの質問を念頭に置いてゲートウェイレイヤーをコーディングすることで、私は突然、少しだけ違うことをしたいと気付きました。ブームで、NHibernateを使いこなすのはとても簡単でした。そこで、私はいくつかの譲歩をし、Linq-ToSqlを使って、NHibernateのいくつかの細部に対して優先順位の高い要件をサポートしました。

私の物語の理由はこれです:NHibernateは、結果変換のようないくつかの素晴らしい小さな機能を提供します。私は、各フィールドにエイリアスを与え、素敵な結果のトランスフォーマー、バング、私のDTOに瞬時に変換され、結合テーブルの大衆と私のDbのビューを持つことができます。今、私が間違ってはいけない、Linq-To-Sqlは、自動生成されたクラスと同様のことがあります。しかし、私はこれらをゲートウェイ層の外に見えるようにしたくない(別の会話)。同様に、Linq-To-SQLはトランザクションを簡単に処理します.Hibernateはあまりうまく行っていないと思います。

私のゲートウェイ/リポジトリ層での私の正確な要件は何ですか?また、どのようなテクノロジが耐久性メディアと互換性がありますか?そして今、私は、どのようなテクノロジーを使いたいか考えています。

私は自分の質問に答えなかったかもしれないが、私はそれがあなたに何か考えを与えてくれたと思う!

ハッピーコーディング、 乾杯、
Chris。

+0

Nhibernateのクエリ構文がとても複雑で(それは私だけですか?)、それを使っていたプロジェクトで1年以上働いた後でも問題は残っていました。 HibernateとFluentのドキュメントはほとんど役に立ちません。私たちは今、SOのようなGoogleとサイトを持っていることがラッキーです。クエリ構文はほとんどありません。だから大きなプロジェクトでは、いつも面白いものを見つけることができます(大きなチームでは本当に役に立たないです)。このような複雑なクエリでは、n + 1のクエリを作成するのは難しくありません。これは小さなデータリストにテストをパスしますが、生産時には悲惨に失敗します。コードからSQL文字列をチェックする簡単な方法はありません。 –

+0

SQLプロファイラ自体はこのようなユーザフレンドリなツールではありません。流暢NHにも欠点があります。初心者の方は、とにかくhbmlにコンパイルされているので、私は長い時間を持っています。だから大きなDBでこれは問題になる可能性があります。私にとって大きな欠点は、LINQ(またはmontly not working)をサポートしていないことです。なぜネイティブクエリ言語構文を省略し、NH固有のものを追加するのですか?あなたはまだ別のものを学ばなければなりません。 NHは高度に構成可能で豊富な機能を持っていると認めますが、私はまだ別のものを探しています。たぶんLightSwitch? –

10

.NETのネイティブフレームワークなので、Entity Frameworkをお勧めします。 Here InformixプロバイダーがEFで使用可能であることが記載されています。

+3

EFは素晴らしい(使い易く、箱から出ていたり、自由にプロジェクトを行ったり、多くのDBプロバイダを持っていて、完璧に動作するLINQプロバイダを持っています)、イベント、ロギング、キャッシング、更新。また、コード・ファーストは非常に新しく、私はそれを使ってそれをテストする機会がありませんでした。 –

5

http://www.ibm.com/developerworks/data/library/techarticle/dm-0903linqentity/

上記のリンクは、Informixプロバイダをダウンロードするだけでなく、エンティティフレームワークと連携して、Informixのプロバイダを使用するステッププロセスでステップを紹介を取るのリンクを提供します。

Entity Frameworkの程度

もっと http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx

あなたはこれがあなたのInformixデータ構造にマップするクラスを作成し、LINQを使用してクエリを実行することができるようになります設定した後、簡単に、置きます。 EFは非常に強力で便利なツールです。私はそれをお勧めします。

3

私の議論はFluent NHibernateです - あなたはHibernateの設定可能性とクロスプラットフォームの使用法を学びますが、大量のXML構成ファイルを使用する必要性を取り除くことになります。 Entity Frameworkは良いですが、私はIDE/Designerのサポートにあまりにも頼っているツールが好きではありません。

ハッピーコーディング、

メル

2

私は流暢NHibernateはをお勧めします。個人的には、他のORMフレームワークより多くの企業で使用されています。

私はEntity Frameworkを使用しました。エンティティフレームワークは、設計上の問題(ロックインの重大な問題点)とコードファースト(大丈夫です)の両方を使用しました。

誰かがほぼ同じ質問をしているときに私はan answer on Code Reviewを投稿しました。

関連する問題