Ted*_*Net 3 c# nhibernate inheritance components table-per-class
我目前正在使用一个棕色数据库,该数据库包含一个表,其中包含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
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
制图:
<class name="IWhatever" table="MyBigTable">
<id .../>
<discriminator column="Type"/>
<subclass name="Product" discriminator-value="P">
<!-- ... -->
</subclass>
<subclass name="HourlyRate" discriminator-value="HR">
<!-- ... -->
</subclass>
<subclass name="TextLines" discriminator-value="TL">
<!-- ... -->
</subclass>
</class>
Run Code Online (Sandbox Code Playgroud)