2015-02-18 79 views
0

微風&角& MV *如何保存小孩的財產?

獲得發票對象,並擴大它的必要特性:客戶,詳細信息等

要訪問的細節特性是容易的,invoice.detail [N] .property。並且保存對現有屬性(1 - n)的更改也很容易。在我的UI,我只是通過我的對象vm.invoice.details循環得到&顯示現有的所有細節,結合他們的輸入,編輯隨意,調用調用SaveChanges(),完成了!

(記住,在這個UI,我需要完成以下過....)

現在,我有一個新的細節,我需要插入空白輸入。

不過,我需要插入一個新的細節到的發票明細現有的陣列。

例如:發票#5具有3點的細節(細節[0],詳細[1],詳細[2])。我需要插入到這個現有的發票,細節[3],並調用saveChanges()

我試圖調用manger.createEntity('invoice'),但它抱怨FK約束。我知道你可以通過值作爲createEntity(「OBJ」,newvalues)第二個參數...但正確和唯一的方法?

看起來這應該都容易得多,但是,好,我很茫然,請幫助在那裏你可以。 TIA!

回答

1

看看它有各種場景,包括這一項測試DocCode sample

或許下面提供你正在尋找的見解:

function addNewDetail() { 
    var newDetail = manager.createEntity('Detail', { 
     invoice: vm.currentInvoice, 
     ... other initial values 
    }); 

    // the newDetail will show up automatically if the view is bound to vm.details 
} 

注意到,我初始化父invoice導航屬性。或者,我可以只設置Detail實體的財產FK初始化內部:

... 
invoiceId: vm.currentInvoice.id, 
... 

無論哪種方式,微風將新的細節添加到details收集currentInvoice的。

你的問題在方面輻條插Detail。無需手動插入新的Detail,也無法以任何方式管理vm.currentInvoice.details屬性的排序順序。

微風有沒有排序的概念收集導航屬性。

如果您需要按特定順序顯示詳細信息,則可以將排序篩選器添加到您的角度綁定到vm.currentInvoice.details

+0

謝謝你的優秀回覆! 以下是我如何完成它: 在我的**控制器**中,我調用了一個如下所示的函數:var d = dataservice.createNewDetail(vm.invoice); d.SeqNumber =(vm.invoice.InvoiceDetails.length + 1); vm.invoice.InvoiceDetails.push(d);' 然後我的數據服務功能需要的不過是 'return manager.createEntity('InvoiceDetail')' 我最初按照你的建議接近它,看到我的OP(_I知道你可以在createEntity('obj',newvalues)中傳遞值作爲第二個參數......但這是否正確且唯一的方法?_) – SSIDEV 2015-02-23 14:59:11

+0

我可以接受你的答案嗎?事實上,你的建議(雖然不同)會引發一個新問題:哪種方法是_correct_?我想這歸結於你MV *環境中最好的效果。如果您發現我的方法存在缺陷或危險,請進一步告知。否則,我們可以稱這個關閉。祝一切順利! – SSIDEV 2015-02-23 15:06:09

+0

在你的情況下,有一點輕微的差異是不重要的。如果您設置了nav屬性,Breeze將確保父和子都處於相同的「EntityManager」中(如果不是,則拋出)。如果該發票存在於孩子的經理中,那麼設置FK ID不會強加該測試,並且僅將新的子孩「Detail」連接到父母「發票」。鑑於你只有一位經理,這對你來說不是問題。選擇最適合你的方法。 – Ward 2015-02-23 21:24:05

0

請確保您有正確的實體名稱,因爲有時創建實體是不是那麼簡單,因爲它seems.Before正與實體看

http://www.getbreezenow.com/documentation/creating-entities

我會建議你看看烏爾元文件,轉到文件的最後一行,可以看到名爲「entitySet」的字段

"entitySet":{"name":"Entity_Name","entityType":"Self.Entity_Name"} 

檢查entityName here i把爲「ENTITY_NAME」,然後嘗試創建實體和使用該名稱

manger.createEntity('Entity_Name'); 
+0

是的。非常好的建議,謝謝。我通過對一些初始值進行硬編碼並將它們用作createEntity的第二個參數來測試我的實體正確性。這成功插入了新值並確認我的實體名稱正確。 – SSIDEV 2015-02-18 13:55:05