2016-12-07 81 views
-1

我在使用數據映射器模式的數據訪問層上工作。我的實際代碼結構是,例如:在數據訪問層映射數據庫的設計模式[C#]

public class Person { 
    public int Age 
    public string FirstName 
    public string LastName 
    public List<Address> Addresses 
    ... 
} 

public class PersonMapper { 
    public Person GetPersonById(int id) 
    public List<Person> GetAll() 
    public bool UpdatePerson(Person person) 
    ... 
} 

我有這麼多的類對應的數據庫表具有相同的名稱。

我的問題是:

  1. 是我的做法對嗎?當我映射所有表格時,我將在域圖層中使用它。

  2. 在Mapper類中,我使用的方法只適用於與這些類名稱相同的表。 (Person類 - >人數據庫表,Order類 - >訂單數據庫表等)但是,從數據庫映射高級選擇的最佳方式是什麼,它將包含連接到更多的表。例如,我想要選擇Person與他所有的Orders.我是否應該爲Person創建域模型,該模型將包含屬性List<Orders>並使用PersonMapper和下一個OrderMapper

+1

我不知道爲什麼它被稱爲映射器。對我個人而言,它是一個存儲庫。如果可以的話,我會使用實體框架爲我做所有這些。 –

+0

EF我無法使用...爲什麼要存儲庫? –

+0

@DenisStephanov:在'DataAccessLayer'世界中,你的'PersonMapper'類通常被稱爲'PersonRepository'。 「Mapper」這個詞在'DAL'中有不同的含義。 –

回答

3

查看DAO模式。

一般情況:對於數據庫中的每個表,您都有一個實體和一個實體Dao類,它也是一個與數據庫通信的數據庫類。

例如Person,PersonDao,Database。

該人是實體。 PersonDao使用Database類僅爲人員表查詢數據庫。 數據庫是數據庫的CRUD類。