使用方法:使用同一个表中的不同业务逻辑映射(NHibernate)多个类?

我目前正在使用一个棕色数据库,该数据库包含一个表,其中包含3种不同类型的业务数据。 它与SalesOrders和订单线有关。 在旧的应用程序中,我们能够为每个销售订单添加3种类型的订单行:产品,小时费率和文本行。 15年前,这是一个快速而肮脏的解决方案,可以在Delphi中轻松查询以获取一个数据网格中的所有行。 一切

现在我尝试使用NHibernate在C#中构建对象模型。 由于这三种线路类型没有真正的业务逻辑连接,我已经制作了3个没有基类的单独实体。 但是,我想将这3种类型合并到一个列表中,以便我可以订购它们。

我已经考虑过使用inheritence,每个类的表,因为表符合要求(没有具有非空约束的列)。 这不是一个合乎逻辑的步骤,因为每种类型的业务完全不同(只有共同点是userId,description和remarks)。 也许是一个组件? 但是如何将属性映射到3个不同的类而没有基类或除表名之外的任何类型的链接?

我希望你们明白我写的是什么。 我还没有真正的代码,我只是在纸上写了一些关于如何处理这段代码的东西。

谁在这里可以帮助我的路上?

亲切的问候,泰德

您可以在三个实体上放置一个接口,并将其作为基类映射到同一个表:

interface IWhatever { // central Id for the whole table int Id { get; set; } // may be some more properties } class Product : IWhatever { // ... } class HourlyRate : IWhatever { // ... } class TextLines : IWhatever { // ... } 

制图: