每个层次结构的EntityFramework表查询多个鉴别符

时间:2015-02-04 21:56:37

标签: entity-framework entity-framework-6 table-per-hierarchy

以下是情景 -

我们有一个应用程序支持发布到多个社交网站(Facebook,Twitter,G +等)。

我们使用TPH在一个Posts表中构造了这个,并带有一个鉴别器列。这些"社交" posts来自一个公共基类,恰当地称为SocialPost

我们只会说context.SocialPosts,它会使用FacebookPostTwitterPostGooglePost的鉴别器来抓取所有内容。

现在我们需要能够抓住这些类型的混合搭配。根据设置,我们希望撤回所有内容,例如Facebook和Google Posts进行处理,同时保持Twitter不受影响。

在一个查询中有没有明智的方法呢?

以下代码

context.SocialPosts.Where(x=>x is FacebookPost || x is GooglePost)

将生成类似以下的SQL

SELECT * FROM Posts WHERE Discriminator IN ('FacebookPost', 'TwitterPost', 'GooglePost') AND Discriminator IN ('FacebookPost','GooglePost')

这显然不是我想要的。我不确定Discriminator 上的双重过滤器本身是否重要,但它肯定是奇怪的SQL使用。

那么,有没有一种理智的方法可以通过一个查询获取多个鉴别器类型,或者最好是抓住所有SocialPosts然后过滤掉我不想要的应用程序端。

0 个答案:

没有答案