0

Visual Studio Lightswitch 2013 使用 sql server 数据源,我们有一个实体 A,与其他实体 B、C、... 有 n:1 关系;因此,实体 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 查询表明所有数据都已返回。在客户端,当数据被反序列化时,导航实体似乎没有实现。

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

任何人都可以帮忙吗?

谢谢。

4

1 回答 1

0

进一步的测试表明,只有 int 列的外键被正确处理为导航属性。例子:

  • “错误”情况:表 A,主键 = nvarchar 字段表 B 具有类型为 nvarchar 的字段 B.f1 作为 A 的外键

    导航属性已定义但未在客户端具体化

  • “正确”情况表 C,主键 = int 字段表 D,字段 D.f1 类型为 int 作为 C 的外键

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

于 2014-04-23T09:08:07.220 回答