Lightswitch Sharepoint アプリに接続されている Azure SQL データベースにある 2 つのテーブルがあります。コードでデータの操作を行っていますが、機能しているように見えますが、1 つのテーブルからエンティティをロードすると、関連するエンティティが別のテーブルに表示されません。
基本的に、製品テーブルと請求明細テーブルがあります。各請求明細レコードには、製品テーブル 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
ましたが、同じエラーが発生します。