存储库使用什么数据模型?
What data models do repositories use?
假设我有一个 Car 和一个 Company 对象:
CarModel
{
int Id;
string Name;
CompanyModel MadeBy;
}
CompanyModel
{
int Id;
string Name;
}
这是两个独立的域对象,每个都有自己的存储库。
然而,当我存储汽车时,我实际上并没有包括 Company 对象——我只存储了 id。从这个意义上说,我还有一个 CarEntity 对象:
CarEntity
{
int Id;
string Name;
int MadeByCompanyId;
}
但是当我将汽车读入我的应用程序时,处理我在开始时定义的 CarModel 会更有用,它包含我需要的所有详细信息,例如制造商的公司名称。
- 我的汽车存储库方法是否应该处理 CarModel 并在内部与 CarEntity 进行映射(这将涉及在 CarRepository 中使用 CompanyRepository,这听起来令人讨厌)?
- 我的汽车存储库应该只处理 CarEntity 并由调用者完成到 CarModel 的映射吗?
我更喜欢第二种方法,因为:
如果 CompanyRepository
的开发人员对函数定义进行了一些更改,那么我们将需要在 CarRepository
中进行这些更改。此外,在第一种方法中,我们将违反 single responsibility principle.
我建议我们可以在 CarEntityToCarModelMapper
class 中使用 CompanyRepository
。
假设我有一个 Car 和一个 Company 对象:
CarModel
{
int Id;
string Name;
CompanyModel MadeBy;
}
CompanyModel
{
int Id;
string Name;
}
这是两个独立的域对象,每个都有自己的存储库。
然而,当我存储汽车时,我实际上并没有包括 Company 对象——我只存储了 id。从这个意义上说,我还有一个 CarEntity 对象:
CarEntity
{
int Id;
string Name;
int MadeByCompanyId;
}
但是当我将汽车读入我的应用程序时,处理我在开始时定义的 CarModel 会更有用,它包含我需要的所有详细信息,例如制造商的公司名称。
- 我的汽车存储库方法是否应该处理 CarModel 并在内部与 CarEntity 进行映射(这将涉及在 CarRepository 中使用 CompanyRepository,这听起来令人讨厌)?
- 我的汽车存储库应该只处理 CarEntity 并由调用者完成到 CarModel 的映射吗?
我更喜欢第二种方法,因为:
如果 CompanyRepository
的开发人员对函数定义进行了一些更改,那么我们将需要在 CarRepository
中进行这些更改。此外,在第一种方法中,我们将违反 single responsibility principle.
我建议我们可以在 CarEntityToCarModelMapper
class 中使用 CompanyRepository
。