English 中文(简体)
DDD和实体与价值目标之间的区别。 寻找整体根基
原标题:DDD and distinction between Entity and Value object. Choosing the aggregate root

我正在设计之中。 我确定这个领域的核心目标是<代码>Patient。 病人必须携带<条码><>>>和医疗记录。 《医疗记录》是一个集体术语,指国家、实验室、XRays、处方。

我是DDD的新鲜事,我与几个概念和我对DDD的理解相左。 下面是显示<代码>Encounter等的编码样本。 <代码>Encounter/code>载有几种适当链接,还提到了另一个类别<编码>Vitals。

<代码>Vitals在<代码>Patient外无意义。 我仍然以自己的钥匙确定数据库的关键。 我不清楚这是否构成一个实体。 目前,我有作为价值标的。

其次,我模式的建立方式是Encounter,被定义为Aggregate深层。 通过<代码>Encounter,医生可订购实验室、Xrays和药品。 基本上,<代码>Encounter记载了订购此类物项的原因。

存在的一个问题是,我还需要在<代码>Encounter的范围以外收回这些物品,因此,“refore”是指Encounter<<>/code> 不是“综合根基”。 <代码>Vitals等项目仅是一个价值物体。

这是我的法典......

public class Encounter {
    String ChiefComplaint {get; set;}
    string Plan {get; set;}
    string Assessment {get; set;}
    Vital PatientVital {get; set;}
}

public class Vital {
    public float Temperature { get; private set; }
    public BloodPressure BP { get; private set; }
    public int Pulse { get; private set; }
    public int Respiratory { get; private set; }

    internal Vital(float temperature, int systolic, int diastolic, int pulse, int respiratory) {
        this.Temperature = temperature;
        BloodPressure bp = new BloodPressure();
        bp.Systolic = systolic;
        bp.Diastolic = diastolic;
        this.Respiratory = respiratory;
        this.BP = bp;
    }

    public void AddBP(int systolic, int diastolic) {
        BloodPressure bp = new BloodPressure();
        bp.Systolic = systolic;
        bp.Diastolic = diastolic;
        this.BP = bp;
    }
}

public struct BloodPressure {
    public BloodPressure(int systolic, int diastolic){
        Systolic = systolic;
        Diastolic = diastolic;
    }

    public int Systolic { get; private set; }
    public int Diastolic { get; private set; }

    public string bloodPressure {
        get { return this.Systolic.ToString() + "/" + this.Diastolic.ToString(); }
    }
}
最佳回答

我不完全肯定你的实际工作<询问>。 缺乏问题标志使人难以理解——但我将努力回答问题似乎是什么。

医务记录、医生和病人都是在以下各方面的潜在综合根源: 这些都是在现实世界存在的,你甚至可以触动他们,每个目标或信息集在一起。 然而,你可能不需要在实际成为整体根源时模仿物体,这取决于您申请的确切要求。

然而,这些实体并不相互合并。 医生可以没有医疗记录,也可以是病人。 病情是,医疗记录需要患者医生,因此不能由两人共同使用。 因此,它们成为实体。

前面提到的每一个人都必须有自己的身份。 请注意,这些物体即使其相关物品没有价值也就生活在一起。 最为明显的是,即使病人不在场,但更重要的是,文件还活着(并且可能使病人和医生都不会被删除,但这是另一个问题)。

我仍然以自己的关键身份确定数据库中的关键位置。

毕竟,你们需要为每位病人储存一份生命物质清单。 由于你可能使用Kingk,你很可能希望利用一个链接桌来模拟这一m:n 关系,因此,你不得不分配钥匙。 这是科索沃。 它是持续存在的层面,而不是模式的缺点,但你应当确保永远不会将这一关键用于除内部用途外的任何用途。

这意味着 计算器不是综合根基

在医生或病人方面,“病人”当然不是一个整体根源: 它又是一片 m子,这是医生和病人之间的一次,因此,显然每个病人和每名医生会碰许多。 如果要删除其中一次(因为那是不正确的,例如),这不会删除病人或医生。 此外,<代码>Encounter不是处方的合计根基: 例如,X-Ray本身是完全有意义的。 然而,你可能希望提及。 再者,今后删除<代码>Encounter时, t回X-Ray。

病人不拥有医生或病人。 医生也没有见面。

还指出,“ight”的见面导致开药,或不会导致任何事情。

<>0> 您的方法AddBP()将有效删除旧价值,因此不应增加。 更重要的是,这一方法使<代码>Vital类别变换,从而变得更加复杂。 我拿走了这种方法。

问题回答

暂无回答




相关问题
DDD - Returning entity in response to a service operation

I am new to domain driven development & have a simple question. If a service needs to generate some entity as a response to an operation then how should it be done? One of the ways is to inject ...

Domain Driven Design efforts in dynamic languages? [closed]

Are you aware of any DDD efforts in a dynamic language ? Practical resources on DDD tend to decrease quite dramatically when straying from enterprise-oriented solutions (a google search exluding C#, ....

Accessing domain objects in the view

If I don t want to expose the internal state of my Domain Objects, but I need to display them, I can think of three approaches. Which of these is the most "correct" (if any?). The "DTO/ViewModel ...

DDD screen cast question?

I wathced a screen cast on DDD by Greg Young the other day which spoke about persisting all state transitions of an object, instead of it s state when saved, then to load it "replay" all these ...

How to fluent-map this (using fluent nhibernate)?

I have two tables in my database "Styles" and "BannedStyles". They have a reference via the ItemNo. Now styles can be banned per store. So if style x is banned at store Y then its very possible that ...

热门标签