質問

している場合、例えば、データベースのテーブルという名(ID、氏名等)をどのようなオブジェクトのデータにアクセス層の事業tier?って思ったこと。

//data access tier
public class DataAccess{

   public interface IPerson{
      int ID{ get; set; }
      string Name{ get; set; }
   }

   internal class Person : IPerson{
      private int id;
      private string name;

      public int ID{ get{return id; } set{ id=value; } }
      public int Name{ get{retutn name; } set{ name=value; }
   }

   public static IPerson GetPerson(int personId)
   {
      //get person record from db, populate Person object
      return person;  
   }
}

//business tier
public class Person : IPerson{
   private int id;
   private string name;

   public int ID{ get{return id;} set{id=value;} }
   public string Name{ get{return name;} set{name=value;} }

   public void Populate(int personId){
      IPerson temp = DataAccess.GetPerson(personId);
      this.ID = temp.ID;
      this.Name = temp.Name;
   }
}

でもこのように少し面倒?あまりエレガントな解決方法がこの問題なのか。べきかを返しDataRowからのデータにアクセス層の層ょうか?

役に立ちましたか?

解決

あなたはあなたのデータアクセス層(DAL)にクラス定義を繰り返す必要はありません。

あなたは別のアセンブリで「ダムのコンテナ、例えばとしてあなたのビジネスエンティティを作成することができますあなたのPersonクラスは、ちょうどすることができます: -

public class Person
{
    int ID { get; set: }
    string Name { get; set: }
}

次に、あなたのDALビジネスエンティティ層への参照を与えることができます。お使いのコントローラオブジェクトは、彼らが別のビジネスロジック層である、またはあなたのUI層の中に、そしてちょうど、ビジネスエンティティを作成することができDALを呼び出すことができ、データベースからそれを移入して、コントローラにそれを返すかどうか。

IMAR Spaanjaarsによってを

この記事では、このパターンの素敵な説明があります。

他のヒント

事業層の違いについて知りたいデータ行うデータを特定のクラスを、データ。この削減に結び解放する変更を永続化層は後日な卸再毎.

を解決する特定の問題ることができますが、:

  • 作成の基礎データオブジェクト/エンティティデータの層しなくてはならないオフのビジネス層を消費するものになっている。
  • または、そういう確認することができまを作成しDTOs(データ転送オブジェクト)に存在する純粋に転送する一つの手段としてのデータからのデータについてはより豊かな実施のビジネスオブジェクトの上位層である。だがこの一環として、リポジトリのパターンの豊富なドメインモデルです。

その他のものが考えていきたいと思いは段にv層では変化などを考えることに頼もしく感じました。階層は物理的、すなわちらを定義する境界プロセス。層は一般的に論理的に、別のプログラムの機能を疎結合す。目指すの層ます。

すべての層が上位層に緩く結合されなければならないこのルールとして、DALにBLの参照を追加することは良い考えではありません。 その優れたインターフェースとDALのデータモデルを定義し、BLにビジネスエンティティフォームを作ります。 私の経験として、その優れたビジネスエンティティまたはビジネスプロセス内でDALとアクセスでリポジトリを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top