带有sql server数据源的HTML客户端中的导航属性

时间:2014-04-22 06:37:43

标签: visual-studio-lightswitch lightswitch-2013

Visual Studio Lightswitch 2013 使用sql server数据源,我们有一个与其他实体B,C,...有n:1关系的实体A.所以,实体A有一些类型为B,C,......的导航属性。

使用HTML客户端,在发出实体A的查询后,属性B,C,...都是未定义的。在以下情况下会发生这种情况:

  • 将数据项添加到屏幕,其中包含相关实体(使用'管理包含的数据'功能在'编辑查询');在数据项对象上使用load方法以编程方式加载可视化集合数据(例如:screen.Customers.load(false).then(...))

  • 以编程方式使用数据服务' expand'方法(例如:myapp.activeDataWorkspace.SqlData.Customers.expand(" Address")。execute()。then(...)

检查返回的数据,隐藏'财产' _'每个实体实例都正确加载了外键字段。

注意:使用Fiddler检查请求的URL会显示查询是否正确;检查sql server发出的查询(虽然Sql Server Profiler)显示查询包含相关数据。发出OData查询会显示返回所有数据。 似乎客户端,当数据被反序列化时,导航实体没有实现。

尝试使用内部数据源的相同方法(导航属性按预期加载)。

有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

进一步测试显示只有int列的外键才能正确处理为导航属性。 例子:

  • '错误'案件: 表A,主键= nvarchar字段 表B具有nvarchar类型的字段B.f1作为A的外键

    导航属性已定义但未在客户端实现

  • '正确'案件 表C,主键= int字段 表D与int类型的字段D.f1作为C的外键

    导航属性在客户端定义并具体化