- テーブル クラスごとに個別のプロジェクトを作成しますか?
いいえ、テーブル クラスごとに個別のプロジェクトを作成しないでください。それは粒度が高すぎます。
- これは 1 つの巨大な .dll を作成しますか? 各プロジェクトは、デフォルトで個別の DLL を作成します (IL マージを使用して変更できると思います)。ただし、各名前空間は DLL と直接的な関係はありません。つまり、1 つの DLL に複数の名前空間を含めることができます。
私たちが通常行ってきたことは、DAL ライブラリの作成です。これは独自のプロジェクトで、通常は のような名前が付けられ、その中にまたはProductName.Data
のような名前空間がある場合があります。ProductName.Data.Models
ProductName.Data.Repositories
名前空間は主に、コードを整理するために使用されます。また、コンパイラも支援します。たとえば、 という名前のデータベース クラスがUsers
あり、それがにある場合、別の名前空間にある場合XYZ.Data
は、 という名前のビュー モデルを引き続き使用できます。Users
XYZ.ViewModels
私たちが行ったもう 1 つのことは、同じ製品の DLL 間でルート名前空間を同じに保つことです。そのため、最近データベースをXYZ.Data
. 次に、アプリケーション固有のロジックを別の DLL に入れ、名前を付けました。XYZ.AppLogic
名前空間にはビュー モデルもありましたXYZ.ViewModels
。
名前空間の数を制限する厳格な規則があるとは思いません。デフォルトでは、Studio はプロジェクト内の各フォルダーに新しい名前空間を作成しようとします。そうは言っても、ファイルの先頭に次のようなものを見たくないので、名前空間の過負荷を避けるようにすることがよくあります。
using XYZ.Data.Models.Accounts;
using XYZ.Data.Models.Users;
using XYZ.AppLogic.Authentication;
using XYZ.AppLogic.Users;
using XYZ.AppLogic.Settings;
using XYZ.ViewModels.UserPreferences;
ただし、それは他の何よりも個人的な好みです。
ソリューション ビューの編集
- マイソリューション
- MyProj.Data
- リポジトリ
- UserRepository.cs
- AccountRepository.cs
User.cs は、テーブルを定義する私の POCO (Plain Ol' CLR Object) です。
リポジトリ フォルダーには、実際にユーザー データにアクセスできる ORM (私は PetaPoco を使用しています) に固有のものがあります。
たとえば、私の UserRepository にはメソッドがある場合があります
public User GetById(int id)
{
var db = new Database(<myConnectionStringName>);
return db.SingleOrDefault<User>(id);
}
この構文は PetaPoco に固有のものですが、実際の DB 接続からデータ オブジェクトを分離する方法です。