数据访问层映射数据库的设计模式[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。
我的问题是:
我的做法对吗?当我映射完所有table后,我会在领域层使用它
在 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
我在使用数据映射器模式的数据访问层上工作。我的实际代码结构例如:
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。
我的问题是:
我的做法对吗?当我映射完所有table后,我会在领域层使用它
在 Mapper classes 中,我使用的方法仅适用于与这些 classes 同名的 tables。 (
Person
class -> Persons db table,Order
class -> Orders db table, etc.)但是最好的方法是什么从数据库映射高级 selects,这将包含与更多 tables 的连接。例如,我想要 selectPerson
和他的所有Orders.
我是否应该为 Person 创建域模型,它将包含 属性List<Orders>
并使用PersonMapper
下一个OrderMapper
?
参见 DAO 模式。
一般来说:对于您的数据库中的每个 table,您都有一个实体和一个实体的 Dao class 还有一个与数据库通信的数据库 class。
例如 Person、PersonDao、Database。
人即实体。 PersonDao 使用数据库 class 只查询数据库中的人 table。 数据库是数据库的增删改查class