数据访问层映射数据库的设计模式[C#]

Design pattern for mapping database in Data Access Layer [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)
    ...
}

我有这么多 class 对应于同名数据库 table。

我的问题是:

  1. 我的做法对吗?当我映射完所有table后,我会在领域层使用它

  2. 在 Mapper classes 中,我使用的方法仅适用于与这些 classes 同名的 tables。 (Person class -> Persons db table, Order class -> Orders db table, etc.)但是最好的方法是什么从数据库映射高级 selects,这将包含与更多 tables 的连接。例如,我想要 select Person 和他的所有 Orders. 我是否应该为 Person 创建域模型,它将包含 属性 List<Orders> 并使用 PersonMapper下一个 OrderMapper?

参见 DAO 模式。

一般来说:对于您的数据库中的每个 table,您都有一个实体和一个实体的 Dao class 还有一个与数据库通信的数据库 class。

例如 Person、PersonDao、Database。

人即实体。 PersonDao 使用数据库 class 只查询数据库中的人 table。 数据库是数据库的增删改查class