2012-06-29 24 views
0

我正在嘗試創建一個包含一個表(「Transaction」實體)和一個視圖(「Invoice」實體)的簡單Lightswitch應用程序。在這種情況下,通過在Transactions.InvoiceId上進行分組,可以從Transactions表中生成Invoices視圖。然後視圖通過一對多關係引用表,這樣發票顯示爲事務上的導航屬性,事務顯示爲發票上的導航屬性。一切都完美無缺,直到我嘗試創建一個新的交易並保存它,此時Lightswitch中的驗證規則觸發了「發票:引用的發票未設置或不再存在」。發票不存在是正確的 - 我試圖保存的交易將成爲新發票的第一個。在Lightswitch中,如何添加引用視圖的新實體?

目前我通過處理Saving事件並在我自己的DataWorkspace中手動創建事務來避開這個問題,但這感覺像是一個黑客,並且不允許我使用Lightswitch的內置驗證來對付其他字段我的交易實體。

有什麼方法可以告訴Lightswitch跳過對發票導航屬性的驗證,但保留其他的完好嗎?或者還有其他方法可以完成我想要做的事情嗎?

回答

0

您提到的Saving事件是Invoice_Saving方法?

您的關係爲發票提供了「交易」導航屬性。這就是你需要創建新的事務,在Incoice_Saving方法,添加:

VB:Me.Transactions.AddNew()

C#:this.Transactions.AddNew();

如果你這樣做,發票還沒有保存沒關係,在保存過程中它將全部被照顧。

+0

問題是這是新發票的第一筆交易 - 因此沒有要添加交易的發票對象。只有在保存交易後,發票視圖中才會有發票。 – Mike

+0

通過這樣做,你正在爲自己努力工作。 「處理Saving事件並在我自己的DataWorkspace中手動創建事務」聽起來像是Invoice_Saving方法。因此,如果它是您實際使用的Transaction_Saving方法,那麼您可以添加以下兩行:「Dim newInvoice = New Invoice()」,「Me.Invoice = newInvoice」。至少我認爲你可以。我不會這樣做,所以我不是100%確定。 –

+0

我試過,但Sql抱怨嘗試向視圖中插入新記錄。 – Mike

相關問題