Dot-Net

什麼對象應該從數據訪問層返回到業務層一個n層系統

  • May 7, 2013

例如,如果您有一個名為 Person(ID、Name 等)的數據庫表,數據訪問層應該將哪種對象返回給業務層?我在想這樣的事情:

//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 的這篇文章很好地解釋了這種模式。

引用自:https://stackoverflow.com/questions/518329