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

时间:2009-07-25 01:30:13

标签: .net class-design

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

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

2 个答案:

答案 0 :(得分:1)

如果主表和属性表之间的关系是1:1(主表中给定记录的属性表中有一个或只有一个活动记录),我将为属性表中的每个属性设置一个属性(s )。

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

答案 1 :(得分:0)

我认为你的主要“实体”类具有适合那些具有另一种强类型的关系的属性。

假设您有一个Product表和一个Category表,Product表包含Category表主键的外键。在您的代码中,您的Product类不会获得整数“CategoryID”属性 - 它获取“Category”属性,该属性是对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等)可以处理数据库交互并处理表之间的外键。