实体框架:如何从L2E返回基本类型

时间:2008-09-20 16:12:17

标签: .net entity-framework ado.net

考虑以下架构:

  • 基础对象'实体'
  • 派生对象'Entry:Base'
  • 和另一个派生对象'CancelledEntry:Entry'

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

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

仅返回Entry类型的对象,没有Entity或CancelledEntry。

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

EntityContext.EntitySet.OfType<Entry>()

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

2 个答案:

答案 0 :(得分:2)

为什么不在IQueryable上应用扩展方法&lt;进入&gt;调用ApplyBaseEntryFilter(),它将应用此过滤器并返回IQueryable&lt;进入&gt;。

这是如何重用linq查询片段的示例。在IQueryable上使用扩展方法&lt;实体&gt;是一种重用查询的好方法,因为您应该在应用程序周围复制和粘贴查询片段,希望有所帮助。

答案 1 :(得分:1)

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

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

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

必须有更好的解决方案