首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Fluent查询中指定单个属性(判别器)的类型/类。

如何在Fluent查询中指定单个属性(判别器)的类型/类。
EN

Stack Overflow用户
提问于 2012-02-23 22:26:27
回答 1查看 413关注 0票数 2

我有一个场景,其中一个名为“注释”的类引用了一个名为“实体”的抽象类型。Fluent-ClassMap看起来非常类似于属性“实体”的如下内容:

代码语言:javascript
复制
classMap.ReferencesAny(x => x.Entity)
   .EntityTypeColumn("DiscriminatorType")
   .EntityIdentifierColumn("DiscriminatorId")
   .IdentityType<int>()
   .AddMetaValue(typeof(Car), typeof(Car).Name);
   .AddMetaValue(typeof(House), typeof(House).Name);

您可能已经从上面的示例中发现,类“实体”由一个名为"House“的类和一个名为"Car”的类子类。使用此设置,只需执行以下操作就可以检索特定“实体”的所有注释: Session.Query().Where(m => m.Entity == myCarObject).ToList()。一切都很有魅力。

以下是简化的类结构:

代码语言:javascript
复制
abstract class Entity{}
class Car : Entity{}
class House : Entity{}

class Comment 
{ 
  public virtual Entity { get; set;}
}

但是,在一个用例中,我需要检索引用任何"Car“的所有”注释“实例。换句话说,我正试图实现以下目标:

代码语言:javascript
复制
var allCommentsOnCars1 = Session.Query<Comment>().Where(m => m.Entity is Car); //or
var allCommentsOnCars2 = Session.Query<Comment>().Where(m => m.Entity.GetType() == typeof(Car));

这两个示例都不起作用(后者抛出一个GetType()不是实现的异常),但是否有可能以任何方式解决这个问题?我很可能通过创建两个独立的表来轻松地解决问题:一个是针对所有的"Cars“评论,另一个是针对所有的”豪斯“评论,但我现在不愿更改数据库结构或模型。

您的反馈将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 23:38:40

也许不是最优雅的解决方案,但我通过简单地使用QueryOver()而不是Query()来解决问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9422369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档