おそらく単純な 3 層の問題です。これにはベスト プラクティスを使用するようにしたいだけですが、私はまだ構造に精通していません。
3 つの層があります。
- GUI: プレゼンテーション層用 ASP.NET (最初のプラットフォーム)
- BAL: ビジネス レイヤーは C# で Web サーバー上のロジックを処理するため、両方とも Web フォーム/MVC + Web サービスに使用できます。
- DAL: データ層の LINQ to SQL。LINQ ではなく BusinessObjects を返します。
- DB: SQL は Microsoft SQL-server/Express になります (まだ決定していません)。
[Persons] のデータベースがある設定を考えてみましょう。それらはすべて複数の [Address] を持つことができ、すべての [PostalCode] と対応する都市名などの完全なリストがあります。
取り決めは、他のテーブルから多くの詳細を結合したことです。
{リレーション}/[テーブル]
- [人]:1 --- N:{人の住所}:M --- 1:[住所]
- [住所]:N --- 1:[郵便番号]
次に、Person 用の DAL を作成します。PersonBO はどのように見えるべきで、結合はいつ行われますか? すべての都市名と可能な住所を取得するのはビジネス層の問題ですか? 人?または、PersonBO を BAL に返す前に、DAL がこれをすべて完了する必要がありますか?
Class PersonBO
{
public int ID {get;set;}
public string Name {get;set;}
public List<AddressBO> {get;set;} // Question #1
}
// Q1: PersonBO を返す前にオブジェクトを取得し、代わりに配列にする必要がありますか? または、これはn層/ 3層では完全に間違っていますか??
Class AddressBO
{
public int ID {get;set;}
public string StreetName {get;set;}
public int PostalCode {get;set;} // Question #2
}
// Q2: 検索を行いますか、それとも PostalCode を後で検索するために残しますか?
どのオブジェクトをどの順序でプルするかを誰か説明できますか? 建設的な批判は大歓迎です。:o)