アプリケーションとデータベース間の通信に使用している特定の方法/アプリケーションは何ですか? ストアド プロシージャを使用したカスタム コードですか? サブソニック?nHibernate? エンティティ フレームワーク? リンク?
14 に答える
私は主にMicrosoft Enterprise Library Data Access Blockを使用して、MS SQL Server データベースのストアド プロシージャにアクセスしています。
私は昨年かそこらの間 NHibernate を使用してきましたが、基本的な CRUD を (ほぼ) 無料で入手するための非常に迅速な方法であることが証明されています。
これに興味がある場合は、CodeProject に関する Billy McCafferty の NHibernate のベスト プラクティスの記事をお勧めします。
http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx
これは、スケーラブルで柔軟な優れたソリューションであることが証明されており、DAL を他のレイヤーから明確に分離することが容易になります。
以前の仕事でHibernateを使用してMySqlとSqlServerの両方に接続しましたが、その後.NETに切り替えたため、現在LINQを使用しており、非常に楽しんでいます。
私たちはプロジェクトでIdeaBladeを使用しています。かなり使いやすいことがわかりました。
アプリケーションがデータに対して直接実行される500個のストアドプロシージャのようなOracleバックエンドがあります。
統合してきたカスタムまたはマップされたドメインモデルの構築を開始しましたが、最初は間違っていましたが、今ではその頭痛の種にも対処できなくなっています... ugh
仕事で私たちのコードベースはC++とPerlであり、MySQLデータベースと通信します。私たちのインターフェースには、C++コード用の基本的なMySQLクライアントライブラリとPerlスクリプト用のDBIモジュールをラップしたかなり薄いカスタムクラスがあります。
SubSonicとLINQtoSQL、できればいつかLINQ to SubSonic!
私は主に、仕事と自由時間のプロジェクトの両方でNHibernateを使用しています。これは、ADO.NETデータリーダー/データセットを使用するための作業の標準を打ち破る試みとして始まり、現在、Hibernate/NHibernateを使用するいくつかのプロジェクトがあります。
古いバージョンのMSEnterpriseAppBlocksのSqlHelperクラス。完璧にはほど遠いですが、単純なCRUDアプリのシンプルさに勝るものはありません。
モデルに実際のデータベース言語のデータソース クラスがある MVC フレームワーク。ほとんどの場合、開発者は save、saveField、delete、find などのメソッドを使用し、フレームワークはこれを SQL クエリに変換します。これはより安全で簡単なだけでなく、コードがデータソースに依存しないという点で非常に便利です。つまり、データベース サーバーを変更してコードを保持することができます。
MS SQL ストアド プロシージャ。
私は通常、LiNQ で DataTier を作成します。
複合インターフェイスを実装するリポジトリで構成されているため、それらの使用方法について完全な柔軟性があります。
IPersonRepository : IReadRepository<Person>, ICreateRepository<Person>, IUpdateRepository<Person> //and so on..
それらはほとんどがドメイン オブジェクト中心であるため、ドメイン オブジェクトを発行し、すべてのマッピング ロジックを自分で処理します。
彼らはまた、いくつかのリスト辞書を作成するかもしれません.exは人のIDと名前で構成される辞書です。そのため、ドロップダウンリストを表示するためにデータベースからあまりプルアップする必要はありません。
ただし、小規模なプロジェクトの場合は、.dbml を使用せずに属性ベース マッピングのみを使用することがあります。
面倒なデータ中心のロジックはすべて DataTier に隠されているため、このアプローチによって非常にクリーンなアプリケーション モデルが得られると思います。ビジネス/サービス層は純粋なビジネスです:)
- SQLサーバー
- すべてのストアド プロシージャ
- Sproc 結果セット -> オブジェクト マッピングを処理するために、プロジェクトからプロジェクトへと再利用するハンドロールされたポリモーフィック エンティティ フレームワーク。
私はそれが私をオールドスクールにしていると思います。
私は職場で Java プロジェクトの Hibernate から始めましたが、.Net ポート (NHibernate) が存在することに気付き、.Net プロジェクトで再び使用しました。また、 joesteeleが言及している記事に出くわし、必要に応じていくつかの小さな変更を加えてプロジェクトのベースとして使用しました。主に、手動で開始および終了するトランザクションをターゲットにする必要がある場合です。
アプリケーション プラットフォームとして Windows または Linux を対象として、Java と C# の両方のプラットフォームに適用できる同じ手法とライブラリを使用すると、さまざまなプラットフォームでの開発が、さまざまなフレームワークを学習するよりも簡単になります。
Subsonic、iBatis、および LINQ を調査する予定ですが、Windows と Linux の両方のプラットフォームをターゲットにする必要があるため、現時点では Hibernate と NHibernate が適切なツールのように思えます。