我有 2 个表,它们都在连接到我的 Lightswitch Sharepoint 应用程序的 Azure SQL 数据库中。我正在对代码中的数据进行一些操作,它似乎正在工作,除了当我从一个表加载实体时,我无法在另一个表中看到相关实体。
基本上,我有一个产品表和一个发票行表。每个发票行记录都包含一个产品代码,该代码与产品表 PK 相关。我已经在Lightswitch中定义了关系,但是当我加载发票行记录时,我看不到产品信息。
我的代码如下:
// Select invoice and get products
myapp.AddEditServiceRecord.InvoicesByCustomer_ItemTap_execute = function (screen) {
screen.ServiceRecord.InvoiceNumber = screen.InvoicesByCustomer.selectedItem.INVO_NO;
// Delete existing lines (if any)
screen.ServiceDetails.data.forEach(function (line) {
line.deleteEntity();
});
// Add products for selected invoice
screen.getInvoiceLinesByNumber().then(function (invLines) {
invLines.data.forEach(function (invLine) {
invLine.getProduct().then(function (invProduct) {
var newLine = new myapp.ServiceDetail();
newLine.ServiceRecord = screen.ServiceRecord;
newLine.ProductCode = invLine.ProductCode;
newLine.ProductDescription = invProduct.Description;
newLine.CasesOrdered = invLine.Cases;
});
});
});
};
这个想法是发票列表在屏幕“InvoicesByCustomer”上,用户单击其中一个以将该发票的详细信息添加到“ServiceRecord”表中。如果我注释掉该newLine.ProductDescription = invProduct.Description
行,它可以完美地添加正确的产品代码和案例值。我还尝试了以下代码的其他一些组合,但在每种情况下,相关产品实体都显示为undefined
Javascript 调试器中。
编辑:我还阅读了这篇关于包含相关数据的文章(http://blogs.msdn.com/b/bethmassi/archive/2012/05/29/lightswitch-tips-amp-tricks-on-query-performance.aspx)并注意到“静态跨度”部分。我检查并设置为“自动(排除)”,所以我将其更改为“包含”,但不幸的是这没有任何区别。我仍然收到invProduct is undefined
消息。我也简单地尝试过invLine.Product.Description
,但它给出了同样的错误。