2

MS SQL 2008+に関連付けられ、MS SQL固有の機能を利用する.NETコードを生成するORMはありますか?

私は特に2つの機能に興味があります:

(1) 「selectin」クエリにマップされないキーでレコードのグループをフェッチします。-これは、2005以降または2008以降のテーブル値パラメーターを使用
して実現できます。OPENXML

(2)DBへの単一の要求で複数のレコードを挿入します(これはBulk-Insertと似ていますが、同じではありません)。例えば:

Customer[] customers = CreateSomeCostomers();  
dataManager.Save(customers);

したがって、SQL関連のコードはクライアントで準備され、SQLサーバーに完全に送信されます。

ところで、ストアドプロシージャは問題外です。

あなたがstackoverflowersが私に何かアドバイスをしてくれたら嬉しいです。

ありがとう!

アップデート:

ニーズに合わせてカスタマイズできる拡張可能なフレームワーク/製品ではなく、完全なソリューションを探しています。したがって、NHibernate / linq2sql/etcをカスタマイズします。私自身のコード実装を書くことは私のニーズに合いません。


受け入れられた答えについてのいくつかの言葉。

現在、すべてのORMフレームワークが複数のデータベース/テクノロジーをカバーしようとしているようです。ですから、私のニーズに対応できる解決策はなく、少なくとも箱から出してすぐに使えるものはないと思います。

Fluent NHibrenateを指す@Rykは、そのようなソリューションが実際に存在すると信じており、それは構成の問題であることを理解しています。NHibernateとFluentNHibernateの両方のソースコードを調べましたが、探している機能をサポートするものは何も見つかりませんでした。たとえば、キーワードOPENXMLまたはsp_xml_preparedocument両方のソースコードが見つかりませんでした。何かが足りないかもしれませんが、そうは思いません。賞金には期限がありますので、FNやNHでこれ以上詳しく調べることはできません。これらの機能はまだサポートされていないと思います。

ですから、受け入れられた答えは、私の最善の理解によれば、そのようなことはないということです。それを主張する最も一般的な答えは、@CadeRouxの答えです。

皆様のご参加ありがとうございました。乾杯!

4

5 に答える 5

1

残念だけど違う。Microsoftは、EntityFrameworkを使用してマルチプラットフォームレーンを進むことを決定しました。SQL Serverを中心に何かを構築し、他のDBをそれぞれのdbベンダーまたはサードパーティのORマッパーに任せていればよかったのですが。

于 2011-02-11T07:26:56.363 に答える
0

SQL Serverの機能を使用する場合、ブラックボックスORMはそれに対応しません。

選択したデータベース(任意のデータベース)を最大限に活用したい場合は、より緊密に結合されるため、ドロップではなく、マッピングレイヤー(ストアドプロシージャとの両方を生成)のコード生成を使用することをお勧めします。 -ORMで。

于 2011-02-14T16:55:12.717 に答える
0

はい、FluentNHibernateはあなたが望むことをするだろうと私は信じています。少しセットアップが必要ですが、それほど難しくはありませんが、一度機能すると、おやつになります。

パフォーマンスノートでは、それは非常に良いですが、毎分数千を実行するトランザクションシステムを実行することを計画している場合は、おそらく古いストアドプロシージャの方法でチューニングを行うでしょう。

基本的な考え方は、データベースオブジェクトをc#オブジェクトにマップするエンティティクラスとマッパークラスを作成することです。そこから、オブジェクトまたはオブジェクトのリストにデータを入力し、Object.Update()またはObject.Delete()またはObject.Get()などを実行するだけです。すでに組み込まれているので、接続する必要はありません。必要に応じて、いつでもオーバーライドできます。それは非常に柔軟です。

于 2011-02-17T10:31:14.450 に答える
0

Nhibernateは、独自のデータアクセスレイヤーを作成する以外の唯一のオプションです。Nhibernateを簡単に拡張して、new | custom|specificSQL構文を使用できます。

于 2011-02-17T15:27:51.143 に答える
0

私はこの答えが少し遅れていることを理解しています(しかしそれを見る他の人には役立つかもしれません)。ここに示した理由に加えて、プロセスで適切なDBソースコード管理を取得するために、オープンソースプロジェクトとして利用できる独自のマッパーがあります:bsn ModuleStore

このツールセットは、nHibernateやEntity FrameworkなどのORMのように機能するわけではなく、さらにコーディングが必要です。ただし、すべてのデータアクセスにSPを使用した「古き良き」アプローチに従っています(議論はありません。動的DBコードと静的DBコードの両方に長所と短所があります)。その結果、クエリはSQLで手動でコーディングする必要があり、DBサーバーで実行されるコードを完全に制御できます。

いくつかの利点として、エンティティの完全な双方向マッピングが得られます(はい、TVPを使用して、TVPのほとんどの例のようにメモリ内のDataTableを構築する代わりに、エンティティを「ストリーミング」する効率的なカスタムデータリーダーを使用します)。また、複数の結果セットを返すSPをサポートし、最後になりましたが、データベースのモジュール化、バージョン管理(SCMとの適切な統合のためのソースコードレベルで)、および整合性チェック(DBに存在するオブジェクトの比較)に対して完全に統合された非常に拡張可能なサポートを提供します。ソースファイルに対して)。

于 2012-05-16T13:43:39.093 に答える