0

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ましたが、同じエラーが発生します。

4

1 に答える 1

0

この場合の解決策は単純なものでした。私のデータが間違っていたので、Lightswitch は正しく機能していました!

私のInvoices表では、製品コードは次のようなものでしたが'A123'、私のProducts表では製品コードは'A123 '(右側にスペースが埋め込まれています) でした。データに対して SQL クエリを実行すると、レコードを一致させることができましたが、Lightswitch は (正しく) 2 つのフィールドを異なるものとして認識したため、それらを関連付けることができませんでした。

私はこれに数時間を無駄にしたかもしれませんが、何かを学んだときは無駄ではありません... と自分に言い聞かせます!

于 2014-01-26T19:39:45.223 に答える