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查询会显示返回所有数据。 似乎客户端,当数据被反序列化时,导航实体没有实现。
尝试使用内部数据源的相同方法(导航属性按预期加载)。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
进一步测试显示只有int列的外键才能正确处理为导航属性。 例子:
'错误'案件: 表A,主键= nvarchar字段 表B具有nvarchar类型的字段B.f1作为A的外键
导航属性已定义但未在客户端实现
'正确'案件 表C,主键= int字段 表D与int类型的字段D.f1作为C的外键
导航属性在客户端定义并具体化