我应该如何构建我的域模型

joh*_*n84 2 c# java architecture domain-driven-design domain-model

我尝试将我的特定域名问题抽象到银行帐户,假设以下情况:

  • 我有某个客户的银行登录.
  • 每个客户可以拥有多个属于同一登录的银行账户.
  • 每个银行账户可以有数千笔交易.

我将类结构设计为folows(简化):

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...
}
Run Code Online (Sandbox Code Playgroud)

好吧,但是如果我说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...
}
Run Code Online (Sandbox Code Playgroud)

然后我将加载一个简化帐户的帐户模型(不包含所有交易),只有用户请求查看特定帐户的交易我将加载此单个整个帐户对象.

那样的方式还可以吗?有更好的方法吗?

kha*_*han 6

根据你的问题,我发现你的基本需求是ORM,因为(如果我没有错)你想要两个
领域的模型映射,
但是
带有lazzy加载
通过延迟加载我们的意思是关系对象只在我们尝试访问它们时加载.你想看到一个特定的学生数据,你永远不想自动加载学生的所有课程(可能是一个集合),除非不想看到他/她的课程(如果学生和课程有关系) .
因此,对于您的问题,您应该使用ORM,它将为您提供两种解决方案:)
以下是.Net提供的一些ORM列表