代码之家  ›  专栏  ›  技术社区  ›  Alex

非数据类是模型的一部分?

  •  2
  • Alex  · 技术社区  · 16 年前

    非数据类(不表示数据库中的任何内容)是否仍然被视为应用程序域模型的一部分你会把它们和你的Linq2Sql域模型放在一起吗?是吗?

    编辑 :类信息:例如,我有一个“statusMessage”类,它在某些情况下被实例化,可能会被丢弃或显示给用户。它与数据库中的数据无关(既不检索也不存储)另一个例子是“邀请”类。我的网站上的用户可以互相“邀请”,如果他们这样做了,就会创建一个邀请类,该类将加密某些信息,然后输出一个链接,用户可以将该链接提供给其他人。我有25节课它们不是用来传输数据的,它们做的是真正的工作,但它们与数据库无关,我不会说它们都是“助手”?! ....

    2 回复  |  直到 16 年前
        1
  •  1
  •   Preet Sangha    16 年前

    域模型是与域相关的数据它可以来自任何来源,也可以是单向的(例如,只计算和持久化,从不回读)数据库只是一种域数据持久化策略。

    所以是的,来自不同地方的数据可能是域模型的一部分。

    就我个人而言,我认为消息更像一个视图模型实体,而表示特定消息需求的状态可以在域模型中在invite的情况下,我会说消息流到一个服务,因此成为域数据——最终传递给另一个用户,我想成为与另一个用户相关的域数据(比如说使用其他视图模型显示)。

        2
  •  1
  •   user151323user151323    16 年前

    这要看情况。

    如果这些类表示来自不同表的数据、处理数据、做出决策和编排操作的组合,那么我会将它们视为业务级实体,并将它们保留在业务层中。

    如果他们是帮手,那就要看情况了。

    补充:在阅读了关于这些类的额外信息之后,我认为它们中的许多应该在您的业务逻辑中占有适当的位置。您可能希望在域模型和业务逻辑之间划一条线。我认为您认为域模型只包含数据库映射类,这很好但是,还有业务规则、工人类,它们接受用户输入、处理用户输入、做出决策并调用必要的操作来执行用户输入这些 能够 包括向数据库中添加内容、发送电子邮件通知、启动计划程序任务、通知其他服务等。对于许多操作,它们的结果只会在数据库中远程反映,某些值可能会更改,但不像完整的业务对象状态直接进入数据库。因此,将它们放在一个专用层中是有意义的。

    另一种选择是将这些类的逻辑放入存储过程,从而将其持久化到数据库中。不合适的东西可能会被归为助手。

    对于“StatusMessage”,可能不需要单独的类消息属于视图级别类可以决定显示哪个消息,但是实际的显示工作将在离ui更近的地方进行。

    推荐文章