我尝试将我的特定领域问题抽象为银行账户,假设以下情况:
- 我有某个客户的银行登录信息。
- 每个客户可以拥有多个属于同一个登录名的银行账户。
- 每个银行账户可以有数千笔交易。
我设计的类结构如下(简化):
public class Login
{
private List<Account> _bankingAccounts;
....more fields, ctor, getters, setters...
}
public class Account
{
private List<Transaction> _transactions;
....more fields, ctor, getters, setters...
}
public class Transaction
{
String _comment;
....more fields, ctor, getters, setters...
}
好吧,但是如果我有 20 个账户,每个账户有 10000 笔交易,并且我从数据库加载整个模型,将会有大量内存,即使我不知道客户是否需要所有这些交易。
我想像这样构建一个更简化的模型:
public class Login
{
private List<SimpleAccount> _bankingAccounts;
....more fields, ctor, getters, setters...
}
public class SimpleAccount
{
....more fields, ctor, getters, setters...
}
public class Account
{
private List<Transaction> _transactions;
....more fields, ctor, getters, setters...
}
public class Transaction
{
String _comment;
....more fields, ctor, getters, setters...
}
然后我将加载一个具有简化账户(不包含所有交易)的账户模型,只有当用户请求查看特定账户的交易时,我才会加载这个单一的整个账户对象。
这样可以吗?有没有更好的方法?
最佳答案
根据你的问题,我发现你的基本需求是 ORM,因为(如果我没记错的话)你想要两件事
领域模型映射
但是
延迟加载
通过延迟加载我们的意思是关系对象仅在我们尝试访问它们时加载。简单地说,当您想查看您永远不想自动加载学生的所有类(class)的特定学生数据时(可能是一个集合)除非不想看到他/她的类(class)(以防学生和类(class)有关系)。
因此,对于您的问题,您应该使用 ORM,它将为您提供两种解决方案:)
这是 list of some ORM .Net提供
关于c# - 我应该如何构建我的领域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717259/