EF 4.1 Code First - 映射关系

时间:2011-11-23 07:26:13

标签: entity-framework entity-framework-4 ef-code-first

我首先从EF 4.1代码开始,我想知道是否有人可以帮助我理解映射此场景的最佳方式:

我有一个班级地址:

public class Address
{
     public int Id { get; set; }
     public string Line1 { get; set; }
     public string Line2 { get; set; }
     public string City { get; set; }
     public string State { get; set; }
     public string ZipCode { get; set; }
}

我还有另外两个有地址的班级:

    A) Company has Office Address (required) and Mailing Address
    A) Person has Home Address (required), Work Address and "Other Address"

电话号码也会出现同样的情况。 我真的很感激任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我绝对会避免使用“每个层次结构表”这种建模(即将地址直接嵌入公司和人员的位置)

含义地址从您的实体中标准化并单独存储(因此TPC)

然后你可以

  1. 将FK“OfficeAddressId”(不可为空)和“MailingAddressId”(可空)添加到公司和3 x地址FK的人员 但是,根据您对“地址查询”的要求,因为有两个不同的实体引用地址,所以要弄清楚哪个地址属于哪个实体或者您正在查看哪种类型的地址并不是很容易,而不必“盲目地'加入公司和个人。
  2. 或者可能过度杀伤,但是更灵活的模型将是

    1. 添加许多:许多表“EntityAddress”,将公司链接到地址或人员到地址,然后添加分类表“AddressType”(办公室,邮件,家庭,工作等)。虽然您需要限制添加到这么多的地址类型:许多通过业务逻辑,它为将来扩展地址提供了最大的灵活性。
    2. 查看这些帖子herehere,了解有关如何解决地址问题的其他想法。