2012-03-16 103 views
1

您好,我想知道是否有人可以解決我的問題。我試着尋找一個解決方案,但不知道哪裏可以開始尋找。用戶類設計問題

我想創建我自己的用戶系統,用戶詳細信息保存在數據庫中。

我有一個用戶類,它包含用戶信息,例如,id,名字,姓氏和用戶類型。用戶類型是普通用戶,管理員,管理員。

我的問題是UserType。有時它是一個字符串,有時它是一個整數,我不知道如何創建一個類來處理這個沒有使用類,而是用UserType作爲int和另一個作爲字符串。

例如 1 =管理員 2 =主持人

而且用戶類帶回不同的信息,例如我只要包含名字和姓,有時我要包含的用戶名和活性和不活躍。

再次我不想爲每個類創建一個單獨的類,但我不想帶回我不需要的數據。

什麼是最好的方法?

+0

任何您無法使用隨asp.net提供的[會員功能](http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx)的原因? – Oded 2012-03-16 09:55:55

+0

會員並不總是最佳的解決方案!當然不。另外,製作自己的*東西*通常可以更好地理解事情的工作方式。 – f2lollpll 2012-03-16 10:01:46

回答

2

你這裏有幾個問題應該可能被分拆...

我的問題是用戶類型。有時它的一個字符串,有時它的一個int

不要那樣做。它稍微陳腐的答案,但你的用戶類型是一個字符串或它是一個int。弄清楚它究竟是哪一個,或者你想要它是什麼,並且做到這一點。

你可以使用枚舉,儘管當然這些都是硬編碼的,所以你不能輕易地添加或刪除,但他們至少可以讓你將字符串連接到int分割。

如果你需要使用兩者,可能會更好的是在你的數據庫中查找(即一個匹配字符串和整數的表),然後你可以在某個地方查找它(可能只是從數據庫一次,然後緩存它們而不是每次查找都要進行數據庫調用)。

而且用戶類帶回不同的信息,比如我 只想包含姓和,有時我想 包含用戶名和活躍和不活躍。

再次我不想爲每個創建一個單獨的類,但我不想 想帶回我不需要的數據。

有多少數據?在大多數情況下,如果您每次都購回所有數據,則不會花費太多的開銷,因爲您總是會知道用戶對象包含所需的所有信息,所以這會更容易。如果您特別擔心要獲取大量數據,則不需要您可以查看Lazy Loading,這可能會按照您的要求進行。您可能會發現,雖然在向數據庫發送數據請求時添加「活動」標誌的開銷比開發第二次數據庫調用的開銷小得多,如果您確實需要該信息的話。

實質上,除非用戶擁有與之相關的大量數據,否則這很可能是性能瓶頸。用戶名,名字和第二個名字以及通常以字節爲單位進行度量的東西不太可能對您造成問題,因此我不會擔心它,除非您能證明它們是性能瓶頸。此時,您可以擔心延遲加載或類似問題來解決您的問題。

+0

謝謝你的建議。也許我想辦法來處理數據。在我的數據庫中,我使用命名值對和用戶表本身的數字表示。所以,例如,如果我有一個下拉列表,我有文本值和一個數值。我將Type保存爲一個int類型,並有一個方法來獲取表示它的值,並將其保存在一個類中,因爲在一天結束時,我將管理和更新的唯一值是文本值僅用於整數值顯示。再次感謝... – 2012-03-16 10:41:17

+0

是的,聽起來像字符串名稱應該只用於顯示代碼,所有內部應該使用int。建議沒有問題。這是一個有趣的問題。儘管爲了將來的參考,你可以通過我的答案看到,在這裏有兩個單獨的問題,最好單獨提出(如果你認爲這是相關的話,可能相互參考)。 – Chris 2012-03-16 10:53:29