OData扩展到多个数据源

时间:2014-08-13 16:42:21

标签: odata visual-studio-lightswitch

我创建了一些Lightswitch HTML应用。每个应用程序都有一个ApplicationData数据源;但是,它们还通过一个或多个OData数据源相互关联。

例如:

HumanResource应用包含

  • 员工表中的ApplicationData。

项目管理应用程序包含:

  • 任务表和项目表中的ApplicationData数据源
  • 相关OData数据源(HumanResourcesData)中的Employees表,它从HumanResouce应用程序的ApplicationData数据源中的Employees表加载数据。

任务有一个与之相关的员工为1..0或1

问题是

myapp.activeDataWorkspace.ApplicationData.Tasks.expand("Project, Employees").execute());

不工作,这是可以理解的。

可以加载任务,因为它们位于“ApplicationData”中,Employees不能,因为它位于“HumanResourceData”中。 OData无法从两个来源获取数据并且神奇地将它们联系起来,而且至少在您手动加载数据时,Lightswitch也不会这么做。

我能想到的两个解决方案是:

  1. 使用task.getEmployees().then(function(results){}); 这将导致每个任务的往返服务器。 不够好

  2. myapp.activeDataWorkspace.ApplicationData.Tasks.load() myapp.activeDataWorkspace.HumanResourceData.Employees.load()

    //The mystery method that I'm looking for Resolve_My_Datas_Relationships_Please_Lightswitch();

  3. 在查看trace.axd时,我注意到当我将集合拖放到viewmodel中并使用相关实体和所有数据自动加载所有数据时,我会为每个相关实体调用HumanResourcesData数据源,这看起来完全正确像解决方案#1。

    这让我相信解决方案#2不存在,因为它不是LightSwitch团队所采用的方法,因为它们可能有正当理由(可能是因为如果对任何特定的查询集合进行优化是非常困难的你事先不知道它们是什么意思

    任何人都能解释一下吗?

0 个答案:

没有答案