【发布时间】:2017-04-22 04:00:25
【问题描述】:
我在使用数据映射器模式的数据访问层上工作。我的实际代码结构例如:
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)
...
}
我有很多类对应同名的数据库表。
我的问题是:
我的方法对吗?当我映射所有表时,我将在域层中使用它。
在 Mapper 类中,我使用的方法仅适用于与这些类同名的表。 (
Personclass -> Persons db 表,Orderclass -> Orders db 表等)但是从数据库映射高级选择的最佳方法是什么,它将包含与更多表的连接。例如,我想选择Person和他的所有Orders.我应该为将包含属性List<Orders>的Person 创建域模型并使用PersonMapper和下一个OrderMapper?
【问题讨论】:
-
我不知道为什么它被称为映射器。对我个人而言,它是一个存储库。如果可以的话,我会使用实体框架来为我完成所有这些工作。
-
EF 我无法使用...为什么是存储库?
-
@DenisStephanov:在
DataAccessLayer世界中,您的PersonMapper类通常称为PersonRepository。Mapper这个词在DAL中有不同的含义。 -
那我应该重命名它吗?存储库和映射器之间有何不同? :/ 我迷失在其中
标签: c# design-patterns mapping data-access-layer business-layer