c# - 我应该如何构建我的领域模型

标签 c# java architecture domain-driven-design domain-model

我尝试将我的特定领域问题抽象为银行账户,假设以下情况:

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

我设计的类结构如下(简化):

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/

相关文章:

java - 如何单击具有特定主题的 gmail 中的未读电子邮件说 "First_name"

Hibernate/JPA 的 Java 配置?

c# - Selenium WebDriver (C#)。将元素拖放到 iframe 中

c# - WCF 代理包装器 - 离线缓冲数据,重新连接并在线发送回来

c# - 二维游戏物理资源

c# - 在设计模式下使用 visual studio 2012 中的报表查看器时出错

java - 找不到 Scala 扩展特征字段

java - Android 自定义日历/日期选择器

javascript - 将数据从 PHP 传递到 JS : in cases of displaying huge amounts of data

c# - (web.config|app.config) 中的配置设置与静态类对象