2009-12-04 74 views
0

我想用一個例子來解釋我想要的。在許多下拉列表中顯示很多表格。 c#,asp.net-mvc,linq2sql

假設我下面的DB設計:

Item (id, name, categoryID); 
Category (id, name); 

當用戶想要創建一個項目(填寫表格),我給類別的下拉列表列表,當用戶選擇的一個ASP.NET MVC類別將自動將categoryID綁定到選定的類別。編輯正確選擇的項目時,我需要顯示相同的下拉列表。

問題: 但是我的數據庫非常大,它需要大約30-40(甚至更多)類別表,只包含「id」和「name」,並且所有表都需要顯示在下拉列表,同時創建其他對象,並且還需要在編輯對象時呈現。絕對高於架構不起作用,因爲使用不同的表名稱編寫相同的邏輯100次是很繁瑣的。 (我使用LINQ2SQL)

目前我的解決辦法是: 製作一部基於所有這些表的視圖,並在應用我只是調用一個函數從單一視圖建設下拉列表。但是每次添加一個新表格時,改變視圖定義仍然很乏味。

你們是否想過爲這種單調乏味的工作提供更好的解決方案,可能使用反射或其他技術。

+1

爲什麼你有30-40個相同結構的表? (id,name)爲什麼不把這多個表壓縮成一個表? – JOBG 2009-12-04 14:25:07

+0

不錯的主意。我沒有想過。但如果我把它們全部放在一張桌子上,數據庫設計就不會很直觀,而且對其他人來說很難理解。我可能會嘗試這個如果我找不到更好的解決方案。謝謝。 – 2009-12-05 10:33:17

+0

我剛剛得知它不起作用,因爲我需要添加第三個列表才能找到它是哪個表(它是類別表還是其他類別表)。在這種情況下,我不能通過執行item.Category來訪問。 – 2009-12-05 13:36:52

回答

0

如果有人對解決方案感興趣: 我用反射來解決這個問題。 我使用DataContext上的反射來獲取表(通過字符串名稱),並獲取其字段並構造選項列表。

1

這不是問題「絕對高於架構不起作用,因爲使用不同的表名寫同樣的邏輯100次是很繁瑣的。」

如果我是你,我將使用「partial class」功能標記這些類的添加接口。 然後,我會爲分部類寫幾個擴展方法。