2016-12-07 54 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类。