使用實體框架處理/組織/使用具有ASP.NET MVC應用程序的硬編碼類型的好方法是什麼?在具有實體框架的ASP.NET MVC應用程序中使用硬編碼類型
通過硬編碼類型我的意思是在業務邏輯中定義的靜態類型,用戶不能管理,只有開發人員。即ProductTypes,CustomerStatuses等。
我想實現一兩件事情:
- 作品以及與實體框架數據綁定
- 將能夠輕鬆地填充MVC視圖DropDownLists(假設我的ViewModel將能夠有一個類型列表)
- 將有一個可靠的存儲在SQL中的值(不管它是字符串還是Id)
- 將能夠在整個公司的if/case語句中使用內斯邏輯
使用枚舉: 例如可以說我有具有類型字段一個產品實體。 我的第一本能是直接在名爲ProductType的類中用它的值創建一個Enum。但是,如果我使用枚舉,我擔心我將無法完成上述4個要求。
使用GlobalConstants 在過去,我還創建了一個GlobalConstants文件和剛剛創建了一堆常量字符串,所以我可以在整個BusinessLogic使用它們。然後在數據庫中,我將創建一個存儲所有這些值的TypeList表(TypeName,TypeValue,FriendlyName等)。所以基本上,TypeList表總是必須與GlobalConstants保持同步或者某些事情會中斷。
東西告訴我枚舉非常適合這些硬編碼類型
我在考慮走這條路,因爲我知道它可以很好的與EF工作,但是我會爲每一個靜態類型都有一張表。我通常會嘗試在單個表格中打包這樣的類型,因爲它們都具有相同的字段。有沒有辦法讓代碼只與這樣的靜態類型,或者你會建議絕對使用數據庫?此外,我將如何使用業務邏輯中的類型與您的建議。即如果PeoductType =缺失 –
通過思考後,我相信你是正確的。我應該爲每一種類型創建一個模型,無論是用戶管理還是硬編碼。這意味着將爲每種類型創建一個數據庫表,併爲硬編碼數據庫創建一個數據庫表,我可以創建一個種子或設置腳本將這些項插入到這些表中。最後,對於業務邏輯,我可以創建字符串GlobalConstants。這一切都有意義嗎? –