我正在开发一个我正在使用EF 6的应用程序。数据库很久以前就已经开发出来了,我没有机会改变任何东西。
有一个Payment
表,其中OriginatorId
列为外键。此外键可以来自Claim
表或Invoice
表。 Payment
表中有另一列名为OriginatorType
。如果这里的值是" INV"然后外键引用Invoice
表。如果值为" CLA"然后外国人引用Claim
表。
我想知道如何处理EF中的这种情况?我想在查询付款时填写Invoice或Claim对象。
查询输出只是基于context.Payment(p => p.PaymentPostedDate >= someDate)
等过滤条件的付款列表。获得此列表后,我需要获取Claim和Invoice的详细信息以生成报告。
数据库不会将OriginatorId映射为外键。因此,POCO生成器不会创建任何引用实体。我想使用流畅的API来创建这个设置,但是这应该有逻辑来解析基于OrigintorType的所需实体。我知道我可以用JOIN写多个查询或一个合适的lambda来查找结果;但是,我喜欢在模型级别处理JOIN逻辑。这将有助于我和其他开发人员避免编写复杂的JOIN或许多查询。这也可以使付款查询无缝。
我真的很感激任何帮助。