考虑这 3 个表:
Client
- Id
Product
- Id
Invoice_Row
- Id
- LinkedObjectId
- LinkedObjectType
Invoice_row 使用 LinkedObjectId 和 LinkedObjectType 字段引用上面的表格,例如:
Invoice_row ID = 1
- LinkedObjectId = 1 (meaning product id = 1)
- LinkedObjectType = 'Product'
Invoice_row ID = 2
- LinkedObjectId = 1 (meaning client id = 1)
- LinkedObjectType = 'Client'
如您所见,invoice_row 对另外两个表有一个动态键(意味着它实际上不是键)。它通过首先查看 LinkedObjectType(要引用哪个表)然后通过 LinkedObjectId(引用表中的特定 ID)来引用其他两个表。
是的,我知道这很糟糕,但这是我必须使用的遗留数据模型。
有什么办法可以以正常方式(使用 NH 或 EF)以某种方式映射,如下所示:
Client
Invoice_Rows
Product
Invoice_Rows
谢谢!