建立实体之间的适当关系

时间:2013-02-25 11:12:06

标签: c# nhibernate domain-driven-design

用户个人资料在系统上具有个人资料属性。 该属性可以是不同类型(AboutYou,Occupation,AnyhingElse)。

现在我想建立正确的关系:

  1. 个人资料和个人资料属性
  2. 配置文件属性和配置文件属性类型(我不想将enum用作数据类型)
  3. Profile.cs

    public List<ProfileAttribute> Attributes {get; set;}
    

    ProfileAttribute.cs

    // holds user entered response on particular subject
    // describe yourself (if aboutYou type is selected)
    public string Response {get; set;}
    public ProfileAttributeType {get; set;}
    

    ProfileAttributeType.cs

    public List<ProfileAttribute> Attributes {get; set;}
    public string AttributeType {get; set;}
    

    这是遗留代码和db,我正在尝试使用ddd方法构建应用程序并生成数据库表,所以我坚持以下内容。

    一个Profile有很多ProfileAttribute。所以我通过个人资料方one to many

    我无法通过ProfileAttribute方面表达关系。所有个人资料属性是属于一个个人资料还是many to many?这个Response属性让我很困惑。你会怎么做?

    另外,对于ProfileAttribute和ProfileAttributeType,我有以下

    一个ProfileAttribute通过AttributeType方面有很多ProfileAttribute个,而通过ProfileAttribute方我有many to one(许多类型可以属于多个ProfileAttributes )

1 个答案:

答案 0 :(得分:1)

首先,ProfileAttributeType本身包含ProfileAttribute的集合似乎很奇怪。也许它会有一组专用类型的属性?

ProfileProfileAttribute之间的关系而言,该属性应为与汇总相关联的值对象。这意味着这种关系是一对多的。换句话说,一个配置文件可以包含许多属性,但属性属于单个配置文件。属性本身可以按属性类型分组。如果存在与属性类型相关联的行为,则属性类型本身可以是实体聚合