代码之家  ›  专栏  ›  技术社区  ›  Chris Burgess

如何将外键属性表映射到业务实体

  •  0
  • Chris Burgess  · 技术社区  · 15 年前

    我在数据库中有一个映射到主实体类的表。表中有一些列保存其他属性表的外键值。

    如何将这些映射到业务类?我是否为每个属性表创建一个新类,并让主类将它们作为属性保存?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Edo Tyler Wall    15 年前

    如果主表和属性表之间的关系是1:1(对于主表中的给定记录,属性表中有一条或只有一条活动记录),则属性表中的每个属性都有一个属性。

    如果主表和属性表之间的关系是1:n,那么对于每个属性表,我将有一个单独的类(可能嵌套在主实体类中)。然后,主实体类将为每个属性表都有一个属性,该属性表将是一个类型列表 List<AttributeType> (因为对于主表中的给定记录,属性表中可以有许多记录)。

        2
  •  0
  •   Jeff Donnici    15 年前

    我认为您的主“实体”类具有其他强类型关系的属性,这是正确的。

    假设您有一个Product表和一个Category表,其中Product表包含Category表主键的外键。在您的代码中,您的产品类没有得到整数“categoryID”属性-它得到一个“category”属性,该属性是对类别类型的引用。

    class Product
    {
      public int ProductID { get; set; }
      public string Name { get; set; }
      public Category Category { get; set;}
    }
    
    class Category
    {
      public int CategoryID { get; set; }
      public string Name { get; set; }
    }
    

    通过这种途径,您可以使用标准类编写业务逻辑,然后持久层(ef、nhibernate等)可以处理数据库交互和处理表之间的外键。