私が作成した新しい Web アプリケーションには、2.5 層の設計が最適であることがわかりました。通常、2 つのクラス ライブラリと 1 つの Web アプリケーションから始めます。
Company.Data(クラス ライブラリ)
Company.Web(クラス ライブラリ) ( PageBase、カスタム コントロール、ヘルパー関数などを含む)
Company.Web.WebApplication(ウェブアプリケーション)
私が作成したアプリケーションでは、ストアド プロシージャのみを使用してデータにアクセスします。実際、CodeSmith テンプレートを作成して、すべてのストアド プロシージャ、データ、およびビジネス クラスを生成しました。
Company.Data
このアセンブリは、主にエンティティ データ クラスとコレクションで構成されます。たとえば、通常Settings、Web アプリケーションで呼び出されるテーブルがあります。Settingと呼ばれるクラスSettingCollectionが生成されます。
したがって、特定の設定をロードする必要がある場合は、これを行うことができます..
Dim setting As New Setting(1) 'pass in the id of the specific setting
setting.Value = "False" 'change the value
setting.Save() ' Call the save method to persist changes back to the database
または、新しい設定を作成するために、コンストラクターに値を渡さないだけです
Dim setting as New Setting()
setting.Name = "SmtpServer"
setting.Value = "localhost"
setting.Save()
アセンブリ内の私の名前空間はCompany.Data通常、次のようになります..
Company.Data.Entites
Company.Data.Collections
Company.Data.BusinessObjects
(この名前空間は、データにアクセスするためのカスタム メソッドを作成するために使用されます)
また、主キー、外部キー、および一意のインデックスに基づいてカスタム メソッドを生成します。
たとえば、設定テーブルの名前列には一意のインデックスがあります。呼び出される共有メソッド GetSettingByNameが自動的に生成され、これが設定オブジェクトを返します。このメソッドはCompany.Data.BusinessObjects名前空間にあります
エンティティ クラスとビジネス オブジェクト クラスの場合、2 つのファイルが生成されます。1 つは毎回生成され、1 つは編集可能で初回のみ生成されます。部分クラスを使用して、上書きせずにカスタム コードを追加できるようにします。
私にとって、この方法論は非常にうまく機能しています。Codesmith の生成により、数え切れないほどのコーディング時間を節約できます。テーブルに 5 つの新しい列を追加し、すべての新しいコードを数秒で再生成できます。ストアド プロシージャは削除され、再作成されます。
私のアプリケーションは 1 つのデータベースのみを使用し、それが Sql Server であるため、2.5 層の設計はうまく機能します。将来、access、oracle、mysql を使用する必要はありません。