2010-12-10 72 views
1

我想要使用Silverlight 4,業務應用程序模板,WCF RIA Services和Entity Framework 4設計CRUD商業應用程序的建議。該應用程序跟蹤對材料樣本執行的實驗室測試結果。它取代了一個(難以維護)現有的Web應用程序。實驗室測試結果存儲在由數百個字段組成的兩個「SampleData」表中。這些表格具有一對一的關係。我使用實體框架的Table Per Type Inheritance將這兩個表合併成一個表,我很滿意。注意:我決定不更改數據庫設計以避免破壞現有的應用程序,but it was considered.如何劃分一個實體與數百個字段?

我的兩難困境是如何分解這個巨大的表。每條記錄代表一個被測試的材料樣本。字段的邏輯分組是通過實驗室測試。我想象我的UI有多個標籤或單獨的頁面 - 每個測試一個。現在的問題是,我吸入所有的字段,但只在分頁的DataGrid中顯示一些字段,並且有明顯的延遲。不是一個巨大的實體,它可能是很好的,有幾個「實驗室測試」實體(每個都代表一種測試類型),它們是我的一個巨型TPT繼承表的子集。我將如何做到這一點?基本SampleData表/實體包含標題字段以及多個子測試結果字段。第二個派生表/實體包含更多通過SampleID鏈接到基礎的測試結果字段。如果分裂,我需要維護每個實驗室測試實體的標題信息。

我願意用一個巨大的表/實體堅持(儘管有輕微的性能損失)。不過,我想知道用這個實體創建我的UI的最佳方式。 DataForm可以選項卡嗎?如果我製作帶有實驗室測試鏈接的儀表板,我應該如何將標題信息與每個測試頁面保持同步?

我知道這是一個廣泛的問題。我希望能夠獲得有關良好設計路徑的建議,這將允許我在添加新實驗室測試(製作更大的實體)時增加應用程序。我希望找到一條能夠簡化維護並利用微軟正在推廣的RAD體驗的途徑。

提前致謝!

+0

如果你不介意我問,你爲什麼覺得web應用程序是很難維持的?我在Silverlight的/ RIA服務切換到ASP.NET MVC,因爲我已經找到了相反的過程:SL/RIA難以維持和發展緩慢的進展。我發現這一切都非常重量級和不靈活。 – 2010-12-17 00:10:12

+0

應用程序的一半是在Asp 1.1中使用古樹視圖和選項卡控件。其中一個標籤有一個框架,其中包含一個完整的Asp 2.0應用程序。需要進行嚴重的重構(並且我已經開始)。多維數組包含數據庫字段名稱和由幻數索引號標識的相應文本框對象。數據庫調用主要是循環來填充數組或執行CRUD。被遺棄的代碼丟棄了應用程序。變量是3或4個字母的首字母縮略詞,因爲誰知道什麼。通常,應用程序將無法編譯,並且會丟失時間。原來的開發人員離開了公司,我這個新人不得不應對這個泥潭。 – DeveloperDan 2010-12-17 13:25:22

回答

0

我回答(並接受)我自己的問題,以提高我的堆棧溢出接受率,但我的「答案」是,我沒有發現任何答案。因爲我不得不繼續這個項目,所以我繼續使用一個巨大的實體。我也感動Silverlight的路程,轉身項目到一個WPF應用程序由於各種鬥爭的Silverlight等固有異步數據訪問。

0

我掃描後討論數據庫設計和必須說,根據你說的是什麼,事實上,你已經得到了用戶的要求,更多的測試(重複值),我希望你能重新考慮分貝重新設計。您可以創建一個平面視圖來模擬現有的平面樣本數據表並使用它來最小化現有應用程序中的損壞。

但是你已經做出決定,所以關於扭轉情況怎麼樣?將代碼添加到從其平面佈局轉換數據的域服務中,而不是修復數據庫,而忽略所有空值。

一個想法是寫一個觀點,即未展平的數據,並留出空沒有測試的情況。查詢會引起人們的注意(我可能會爲此而惹火),因爲它看起來很討厭,但實際上DBMS在優化和執行查詢方面做得很好(無論如何都在Oracle中)。我從哪裏programmer_exp_flat是csharp_yrs不爲空 工會 選擇programmer_id有做一個視圖類似::

了很大的成效創建視圖 programmer_exp_unflat爲( 選擇programmer_id, 'C#',csharp_yrs,公司的Java 」,java_yrs從programmer_exp_flat其中java_yrs不爲空 工會 選擇programmer_id, 'Cobol語言',cobol_yrs從programmer_exp_flat其中cobol_yrs不爲空 。 重複xx倍)從雙重

無論你如何看待它,它都是倒退和醜陋的,但它將你的結果集減少到最低限度,並且不需要將事情劃分到不同的類別中。新的測試值需要修改視圖,並且根據UI靈活性和業務規則,可能不需要任何更改。

它使編碼在UI更加困難,因爲它會一直跟在第一時間正確的數據庫設計,但你的查詢結果減少到只有已經完成了測試。如果你的用戶是靈活的用戶界面可以被設計爲顯示測試結果作爲一個列表顯示小菜一碟。你目前的設計幾乎迫使你用每一個新的測試來修改UI和數據庫。

這些都是使成爲開發這麼多的樂趣類型的挑戰 - 爲什麼都可以建在五分鐘內營銷噱頭樣品CRUD應用程序在現實世界一文不值。

+0

我喜歡你的平坦視野。不幸的是,我不能整齊地把這些專欄分成幾個類別,比如YearsExperience。相反,我的專欄跟蹤了不同的測量結果,如溫度,重量,速度,厚度等。感謝提醒我,成爲一名開發人員非常有趣。有時我會忘記這一點。 – DeveloperDan 2010-12-17 14:56:48

相關問題