【发布时间】:2013-01-20 07:36:09
【问题描述】:
我正在尝试获取具有某种类型的 E 对象的 Host 对象,如下所示:
return Session.Query<Host>().Where(x => x.E is B).ToList();
这似乎不起作用,可能是因为 E 属于 A 类型,而 B 继承自 A。继承可能是问题所在。更多(简化)细节:
class Host
{
public A E { get; set; }
}
class B : A
{
}
任何想法为什么上述不起作用?谢谢。
PS:
请注意,以上应该可以工作 - 我使用了错误的类名!
【问题讨论】:
-
当您说“这似乎不起作用”时,您是说您返回的列表包含
Hosts 和Es 是不是Bs ? -
我知道数据库包含 2 个 Host 对象和一个 Host 对象,它有一个 E 对象和一个 B 类对象。上面的 Linq 查询返回 0 个元素。
-
也许是个愚蠢的问题,但如果您从数据库中检索这两个对象,是
.E和B?可能数据库无法恢复这些信息。 -
是的,我验证了这一点。这实际上是集成测试的一部分。谢谢。
-
@csetzkorn 是 NHibernate 吗?
标签: c# linq nhibernate inheritance types