任何在breeze中查询继承基类型的方法,但要获取具体属性

任何在breeze中查询继承基类型的方法,但要获取具体属性,breeze,Breeze,假设对象模型如下所示: abstract BaseObject { Id { get;set; } } ObjectTypeA : BaseObject { SomeProperty { get;set; } } ObjectTypeB : BaseObject { AnotherProperty { get;set; } } 如果对IQueryable执行查询,我将在集合中获得两个继承类型的实例,但我无法访问SomeProperty或其

假设对象模型如下所示:

abstract BaseObject  
{  
    Id { get;set; }  
}

ObjectTypeA : BaseObject
{  
    SomeProperty { get;set; }  
}

ObjectTypeB : BaseObject
{  
    AnotherProperty { get;set; }  
}
如果对
IQueryable
执行查询,我将在集合中获得两个继承类型的实例,但我无法访问SomeProperty或其他属性,尽管entityAspect数据确实具有这两个子类型的正确类型信息

这在某种程度上是有意义的,因为查询要求返回特定类型的对象,这就是我得到的。但是,在客户端,我可以强制转换对象并访问属性

是否有一种变通方法允许在微风中出现类似的行为


我看到的另一种选择是,必须在breeze中对每个继承的类型进行两次查询,然后以某种方式将结果结合起来并使用它……

我不确定我是否理解这个问题。您查询了基类型(所谓的多态查询),并收到了具体的实体作为返回。这些实体中的每一个都有自己的属性以及基本类型的属性。您可以在客户端应用程序中引用这些属性

在您的示例中,我只能通过
Id
查询基本类型,这意味着我将在客户机上接收单个实体,即“a”或“B”。您可以询问对象是“A”还是“B”。因为您使用的是JavaScript,所以不需要强制转换。您可以通过简单的询问来判断对象是否具有
someProperty
anotherProperty
。在JavaScript中,“强制转换”的整个概念是不相关的。也许我不明白你的意思


更广泛的多态查询可以使用“A”和“B”类型填充Breeze EntityManager缓存。你可以再问一个问题。。。仅缓存的查询不会转到服务器。。。专门针对“A”或“B”类型的。。。如果要在缓存中加载混合实体后按类型的属性进行筛选。也许这就是你需要的。

我不确定我是否理解这个问题。您查询了基类型(所谓的多态查询),并收到了具体的实体作为返回。这些实体中的每一个都有自己的属性以及基本类型的属性。您可以在客户端应用程序中引用这些属性

在您的示例中,我只能通过
Id
查询基本类型,这意味着我将在客户机上接收单个实体,即“a”或“B”。您可以询问对象是“A”还是“B”。因为您使用的是JavaScript,所以不需要强制转换。您可以通过简单的询问来判断对象是否具有
someProperty
anotherProperty
。在JavaScript中,“强制转换”的整个概念是不相关的。也许我不明白你的意思


更广泛的多态查询可以使用“A”和“B”类型填充Breeze EntityManager缓存。你可以再问一个问题。。。仅缓存的查询不会转到服务器。。。专门针对“A”或“B”类型的。。。如果要在缓存中加载混合实体后按类型的属性进行筛选。也许这就是你需要的。

谢谢你的详细回答。基本上,我不确定你是否可以用breeze做这样的“多态”查询。我没有在我的特定实例上获得“someproperty”和“anotherproperty”属性,尽管我在查询中得到了不同的类型。我以为这是breeze某种程度上将实体映射到最低公分母,但事实证明,这更多的是关于我的模态是如何组织的,而不是breeze的行为。所以你的回答,虽然没有具体解决我的问题,但确实指出这是我的问题,而不是breeze的!!谢谢谢谢你的详细回答。基本上,我不确定你是否可以用breeze做这样的“多态”查询。我没有在我的特定实例上获得“someproperty”和“anotherproperty”属性,尽管我在查询中得到了不同的类型。我以为这是breeze某种程度上将实体映射到最低公分母,但事实证明,这更多的是关于我的模态是如何组织的,而不是breeze的行为。所以你的回答,虽然没有具体解决我的问题,但确实指出这是我的问题,而不是breeze的!!谢谢