我在数据库中有一个表,我正在映射到主实体类。该表有一些列,用于将外键值保存到其他属性表中。
如何将这些映射到业务类?我是否为每个属性表创建一个新类,并让主类将这些属性作为属性保存?
答案 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等)可以处理数据库交互并处理表之间的外键。