2009-06-22 61 views
1

alt text http://img29.imageshack.us/img29/825/simplemodel.jpg子類表,並在德爾福

一個大麻煩怎麼可以看到上面的,它是一種子類在RDBMS表(在這種情況下,我最喜歡的:MySQL的),所以我用Visual子類化處理它一個基本形式與驗證字段數據tb_order_base等

這樣一來,我是自由的重複代碼和其他一些問題困擾的,好了,這似乎是一個真正的面向對象的形式給出。但是...

現在我有一個大的問題與子類的形式即tb_order_service與主/明細方法,當我發佈tb_order_base數據集,而不是德爾福先發布它,並從RDBMS獲得PK ID,然後張貼TB_ORDER_PRODUCT與填充ID,它做反對,先發布詳細tb_order_product數據集,然後掌握tb_order_base,所以我得到一個大的前景關鍵約束錯誤。

有沒有人有任何想法如何繞過這個驚人的問題呢?

我之前曾問它,但在The Master/Detail Behavior

回答

2

有一件事我已經在這樣的條件下完成的一些細節是從做DBMS直接調用掙脫,並改爲使用內存的數據集(或客戶端的數據集)爲表格。當用戶按下保存按鈕時,我會驗證我的編輯並返回任何錯誤。如果沒有錯誤,那麼我將開始一個數據庫事務,提交主記錄(然後讀取主記錄鍵回來,如果它插入),然後運行直通每個表commiting子記錄,然後提交事務(或回滾如果在保存子數據時有任何問題)。

我也使用數據感知組件望而卻步。它們對於簡單的實用程序類型的程序非常適用,但是當您開始使用它們創建複雜系統時,您會發現通過使用標準編輯和將數據推入/從數據庫中拉出的功能很容易解決的小問題。我通常會做的唯一例外是網格,但我只使用網格進行選擇......實際的編輯是使用非數據感知組件完成的。

+0

@skamradt:我覺得每一個方法都有它自己的頭痛,我很高興能以這種方式工作,雖然這件煩心事。另一個問題是,現在很難改變整個系統。謝啦。 – 2009-06-22 20:23:06