0

考虑以下架构:

  • 基础对象“实体”
  • 派生对象“条目:基础”
  • 以及进一步派生的对象“CancelledEntry:Entry”

在 EntitySQL 中,我可以编写以下内容:

[...] where it is of (only MyEntities.Entry) [...]

只返回 Entry 类型的对象,而不返回 Entity 或 CancelledEntry。

在 linq to sql 中,以下命令将返回 Entry 和 CancelledEntry 类型的对象。

EntityContext.EntitySet.OfType<Entry>()

用于仅返回 Entry 类型的对象的语法/函数是什么?

4

2 回答 2

2

为什么不在 IQueryable<Entry> 上应用一个名为 ApplyBaseEntryFilter() 的扩展方法,该方法将应用此过滤器并返回一个 IQueryable<Entry>。

这是一个如何重用 linq 查询片段的示例。在 IQueryable<Entity> 上使用扩展方法是重用查询的好方法,因为您永远不需要在应用程序周围复制和粘贴查询片段,希望对您有所帮助。

于 2008-10-07T06:50:47.920 回答
1

好的,我找到了部分解决方案:

EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )

然而,这非常糟糕,因为如果我创建一个新的派生对象,我必须进入所有查询并专门添加一个条件来删除它。

必须有更好的解决方案

于 2008-09-20T16:31:34.167 回答