breeze:将web api实体与第三方wcf服务相结合

breeze:将web api实体与第三方wcf服务相结合,breeze,Breeze,我使用Web API返回Contrat EF实体和元数据 合同实体具有PersonId属性,该属性持有Person实体的外键。 这就是事情变得复杂的地方 为了获取Person实体,我需要调用WCF服务。此服务不使用实体框架检索实体。事实上,Person实体存储在Oracle数据库中 然后在客户端,我需要将该Person实体分配给Contract实体。我想我需要扩展契约模型并添加Person类型的属性 我已经通过了埃德蒙兹的样本,这似乎接近我要做的 我不打算直接从客户端调用WCF服务。相反,我将在

我使用Web API返回Contrat EF实体和元数据

合同实体具有PersonId属性,该属性持有Person实体的外键。 这就是事情变得复杂的地方

为了获取Person实体,我需要调用WCF服务。此服务不使用实体框架检索实体。事实上,Person实体存储在Oracle数据库中

然后在客户端,我需要将该Person实体分配给Contract实体。我想我需要扩展契约模型并添加Person类型的属性

我已经通过了埃德蒙兹的样本,这似乎接近我要做的

我不打算直接从客户端调用WCF服务。相反,我将在我的WebAPI服务中调用一个GetPerson方法,这将反过来调用WCF服务

因此,我的问题是:既然我已经访问了WebAPI服务,我应该尝试返回IQueryable和元数据(听起来很难),还是简单地返回JSON数据并按照Edmunds示例的方式进行


哪个更容易实现

Edmunds示例重点关注对您无法控制的HTTP服务的客户端查询

在这种情况下,听起来您更愿意让您控制的服务器上发生所有事情。。。包括WCF服务的任何附带行程。那也是我的偏好。。。虽然我不知道做出判断所需的细节

如果我在获取单个
合同
时只需要相关的
人员
,我想我应该让我的Web API操作方法返回一个完全由服务器组成的
合同
图(包括我通过WCF服务在服务器上获取的
人员

但您可能会想到一个客户,他在一次呼叫中需要许多
合同
实体,每个实体都扩展了相关的
人员
实体。当您询问在方法上放置
IQueryable
时,这就是您的意思吗


如果是这样的话,我仍然会考虑在服务器上完整地编写这些文件,以获得相关的<代码>人>代码>对象,然后将生成的集合作为一个<代码> IQueEngy/Cuth>,以便客户端可以进行过滤。啊。我怀疑

IQueryable
是不明智的
IEnumerable
可能更好。您仍然可以将一些筛选值传递给Web API方法(请参见
EntityQuery.withParameters
)。

感谢Ward的回答。我认为你是对的,在服务器端做所有事情可能会更容易。那我有个问题。假设我创建了一个自定义EF datacontext。当我调用Contracts()方法来查询Contract表时,我应该调用我的WCF服务来填充Contract的Person属性。Metadata()方法是否将返回有关人员类型的元数据?如果是这样,那么对我来说一切都应该很好。或者我还需要在客户端定义人员类型吗?