【发布时间】:2011-08-15 10:24:14
【问题描述】:
我目前正在使用一个棕地数据库,该数据库包含一个包含 3 种不同类型业务数据的表。它与 SalesOrders 和 orderlines 有关。在旧应用程序中,我们能够为每个销售订单添加 3 种类型的订单行:产品、小时费率和文本行。 15 年前,这是一种快速而肮脏的解决方案,可以在 Delphi 中轻松查询以在一个数据网格中获取所有行。每一个
现在我正在尝试使用 NHibernate 在 C# 中构建对象模型。我已经制作了 3 个没有基类的单独实体,因为这 3 种线型没有真正的业务逻辑连接。但是,我想将这 3 种类型放在一个列表中,以便我可以订购它们。
我考虑过使用继承,每个类一个表,因为表满足要求(没有非空限制的列)。但这不是一个合乎逻辑的步骤,因为每种类型的业务完全不同(只有共同点是用户 ID、描述和备注)。也许是一个组件?但是如何将属性映射到 3 个没有基类或除表名之外的任何类型的链接的不同类?
我希望你们能理解我写的内容。我还没有真正的代码,我只是在纸上画了一些关于如何处理这些代码的东西。
这里有谁能帮助我吗?
亲切的问候, 泰德
【问题讨论】:
-
我在这里的理解是:您有一个表,其中包含三种不同类型的对象。您想将其映射到三个实体。问题:您如何在数据库中区分它们?你能改变数据库模型吗?应该根据什么来订购?
-
可以使用鉴别器列来区分。我可以更改表结构的某些部分,但不是全部(因为该应用程序基于棕地应用程序和数据库)。按行号排序。
标签: c# nhibernate inheritance components table-per-class