3

是的,我同意标题表明我目前的思路是有缺陷的。但是希望再次达到理智,这就是我如何进入这种遗憾的状态。

主题对象是一个地址,主题应用程序在三个区域办事处拥有数百名员工。在这种情况下,将(3)个地址视为实体对象是有用的,并且仅将这三个地址保留在数据库中。

当然,员工有工作,因为该应用程序服务于成千上万的客户。在这种情况下,将 Address 视为 ValueObject 更为有用。

现在我想要一个派对模式来维护公司和员工的共同特征,比如......地址。

最后一个事实 - 我们有一个 ValueObject 类,它执行您可能期望从值对象中完成的事情(即,根据公共属性确定相等性)和一个实体类(如果对象是持久的,则基于某个 id 的相等性)。

那么该怎么办?在我想我会问这个并看看会得到什么样的答案之前,我一直在玩以下课程的想法......

class Address : ValueObject, IHaveAddress{
    Line 1 {get;}
    ... etc
    Address {get{return this;}} // this has an awkward smell
}

class EntityAddress : Entity<int>, IHaveAddress{
    Address {get;}
}

interface IHaveAddress {
    Address {get;}
}

class Party : Entity<int> {
    IList<IHaveAddress> _address;
}

这样的想法有什么好处吗??

干杯,
贝里尔

回答

是的,我的想法是有缺陷的 :-)
在下面的模型的上下文中,我正在寻找的对象是一个实体。

感谢 IAbstract 和这个精彩的链接

在此处输入图像描述

4

1 回答 1

2

这有帮助吗:MSDN 博客...实现一个值对象基类?我想我找到了可以玩的新东西...

更新 我不确定这是一个多少答案
......我认为使用标准的“复合”术语而不是“派对”更容易混淆。实际上,您有一个公司(根),一组地址(或分支),许多人(或离开)在其中工作。

但我不确定ValueObject到底有多少价值。从表面上看,超类型很可能对比较 Address 对象很有用。不过,这似乎有点倒退的感觉。也就是说,在您的示例中,存储 1 个地址对象并将 Person 作为复合对象添加到分支地址肯定更有意义。

就像我之前说的,我有一个个人项目,我将在其中将 ValueObject 与一些 Composite 对象一起工作,以发现它的用处。您对Entity实体框架的任何实现的引用是否相关?还是Entity<int>只是为了引用记录 ID 号?

于 2011-07-05T20:42:48.740 回答