繁体   English   中英

将规范化的数据库表映射到类

[英]Mapping normalized database tables to classes

我正在开发一个简单的在线订购应用程序,并且已经有一个使用规范化的数据库模式设计。

其中,有 3 个表: orderproductorder_d (表示订单详细信息)。

这些是 map 到表的类(我使用 PetaPoco 作为我的 ORM):

public class order {
    [PrimaryKeyColumn]
    public int o_id { get; set; }

    // order info
}

public class product {
    [PrimaryKeyColumn]
    public int p_id { get; set; }

    // product info
}

public class order_d {
    [PrimaryKeyColumn]
    public int od_id { get; set; }

    [ForeignKey(typeof(order), Column = "o_id")]
    public int id_order { get; set; }

    [ForeignKey(typeof(product), Column = "p_id")]
    public int id_product { get; set; }

    public int product_quantity { get; set; }
}

现在,当我想在前端显示订单时,我必须从 order 和 order_d 表中获取记录并将它们连接到单个对象/实体上:一个订单,我们可以说是域 model (如果我'我错了:P)。

在我看来,它看起来像这样

我一直在阅读有关存储库模式的信息,据我了解,将其应用于我的项目看起来像这样

我对此有几个问题:

  • 这是解决这个问题的正确方法吗?
  • 我必须在我的项目中实现什么才能使用这种模式?

希望我没有过度简化任何事情。 谢谢。

在我看来,您不必加入 Order 和 Order_d 表,您的 ORM 应该这样做。 您将以这种方式获得的 Order object 将是域 model 或至少与其一致,因此如果您域中的 Order 具有非持久性属性或其他行为,您可以考虑为这些部分创建部分 ZA2F2ED4F8EBC2CBB4C21A29DZ0。

我认为您不需要存储库模式实现,因为您没有提到真正需要将数据访问与域逻辑分开。 请记住,您的数据访问权限是由您的 ORM 提供的,因此在您使用 ORM 之后对这些对象执行的任何操作都没有多大意义。 老实说,我不相信你有一个很好的人选来实现这个模式。 如果您想很好地在不同的 ORM 之间跳转,那就另当别论了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM