0

私は、ASP.NETクライアント、ASP.NET Web Services中間層、およびOracleバックエンドを持つ既存のシステムにオブジェクトリレーショナルマッパーを使用することに興味があります。すべてのデータベースへのアクセスはストアドプロシージャを使用して行われ、WebサービスではSQLは許可されません。私はNHibernate、TelerikのOpenAccess ORM、Entity Frameworkを調査してきました。データベースはDBAによってきっちりと制御されているので、私はこれを「分離」と題しました。また、データベース設計を制御し、(オブジェクトモデルの)適切な正規化のためにデータベースを再加工することは、ほとんど問題ではありません。また、ツールでSQLを作成できるようにすることも問題です。分離環境のオブジェクトリレーショナルモデル(ORM)

私の質問は次のとおりです。これらの制約を前提とすると、これらのツールのどれがこの種の環境に最適な統合を可能にしますか?

答えて

3

全くありません。

ストアドプロシージャでeverythignを実行することで、ORMの機能の99%を使用することはありません。

おそらく

ServiceStack.OrmLite、または大規模な、などのようなマイクロORMを使用することをお勧め...

しかし、NH、ライトスピードのような任意の完全なひな鳥を育てるのORMを見て、EF、オーバー殺す完了し、ちょうど作成されます。 0ゲインのための複雑さ。

+0

ありがとうございます。私はそれらを調べる必要があります。私はEFを使用して同じスタックを保つことを望んでいました(プラス比較的早くSQL Serverに移行しています)。 – StoneJedi

1

私はこの権利を得ましょう。あなたの制約は以下のとおりです。

  • はあなたがどのような方法でデータベースを変更することはできませんORM
  • を使用する必要があります。
  • ストアドプロシージャのみを使用できます。

私は@Phillに同意すると思います。フル機能のORMは、その機能を使用できないときには過剰です。

私はかつてこのようなシステムで働いていましたが、DBAの管理下ではデータにアクセスする手順のみが必要でした。悪夢。

+0

ええ、それは非常に制限的です。私はORMのジェネリックSQL文でいくつかのテストを行いました。私は与えられたsprocsよりも遅くはありません。さらに、彼らはsprocsにビジネスロジックを埋め込んでいます。ロジックが中間層に存在し、そこにしか存在しないようにしたいので、何も複製していないので、テストの際にロジックエラーが2箇所で発生することはありません。ああ、私は私が持っているものと仕事をしなければならないでしょう!問題についてここに投稿してください:http://stackoverflow.com/questions/1191244/convincing-a-die-hard-dba-to-use-an-orm-for-the-majority-of-crud-vs-stored -proce – StoneJedi

+0

また、drekka、1)ORMを使用する必要はありません。 2)私はDBAによって書かれた3)はい、データベースを変更することはできません。このアプリケーションには多くのセキュリティ制限があります。 – StoneJedi

3

ストアドプロシージャでデータアクセスを完全に実装しても、ORMを使用して価値を得ることはできません。それはおそらくあなたがおそらくいくつかの利点を使用しないことを意味します。あなたが評価したオームズについては

、あなたはおそらくすでにそのことに気づいています

  • をあなたが勝ったように、それらのすべては、データベースがすでに定義された後、あなたは自分のモデルを作成することができ、データベースの最初のアプローチをサポート「Tは、一方ではNHibernateはのOpenAccessとNHibernateのは、オラクルがサポートされていませ
  • んが、箱から出して、モデルの視覚的な表現を提供するDBAは資格情報
  • Entity FrameworkのとのOpenAccessを求めることが、どのような方法で仕事に干渉しなければなりませんOracleを使用しているEntity Frameworkではそれほど単純ではありません
  • ストアドプロシージャはEntity Frameworkでサポートされており、OpenAccessはNHibernateよりはるかに洗練されています。 OpenAccessでは、ストアドプロシージャを複数の結果セットにマップすることさえできます。

私は役立つことを願っています。