Dot-Net
什麼對象應該從數據訪問層返回到業務層一個n層系統
例如,如果您有一個名為 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 的這篇文章很好地解釋了這種模式。