2014-02-23 61 views
2

我已將枚舉添加到我的C# Entity Framework 6, MVC 4 application。我喜歡的方法爲:何時使用實體框架使用枚舉?

  1. 我覺得我的模型很清楚,值來自查找。
  2. 我可以很容易地將它們綁定到我的視圖中的選擇列表,使用如下所示的接近:examples from Stack Overflow
  3. 我不查找數據庫來獲取值。
  4. 我有更少的管道代碼來使用這些值。

在下行路上,我在想:

  1. 我必須要小心,以保持我的數據庫同步與我的實際查找表的代碼。
  2. 我想,我需要在每次更改代碼時都部署代碼,而不是在用戶可以添加新的查找值的「管理」表中。 (我猜你可能會有選擇性,不會使用枚舉來改變很多值)。

我只是想知道這種方法的真正優勢是什麼,如果有我想避免它的常見情況?

感謝

+1

從不。您的數據庫綁定代碼。現在看起來可能是一件好事,但在團隊環境中,這是一場可能發生的災難。數據庫中的數據更改時必須重新部署是非常可怕的。 – Jammer

+1

謝謝干擾者,是的,我正在走向這種思維方式。 – davy

回答

1

我不認爲你的問題是在所有涉及到EF,它更後端無關。

唯一真正的問題是你已經建議 - 當你需要添加/刪除值時必須重新編譯。但是,這一切都取決於您實際期望列表的更改頻率。

使用enum點是從開發商的角度可讀性&簡單,但是,如果你enum實際上只是UI目的,我要說,你最終可能會讓開發者在維護列表比更多的工作一次做了很多工作,而不必再擔心它。

爲了爲用戶添加新選項而重新編譯似乎對我來說非常脆弱。

+0

謝謝詹姆斯,是的,我同意。我想我會謹慎使用他的方法,回到非常靜態的列表(如果有的話)。 – davy

+1

我真的不會全部使用它。這些問題千差萬別,遠遠超出評論的範圍。同時,只有發展到已知的要求是一種良好的做法,人們不應該排除未來的要求,並將自己繪製到一個角落,這將是困難的,可能容易出錯並且在需求改變時稍後改變是昂貴的。 – Jammer

+0

@Jammer你的意見不僅僅是有利於你的意見,但在我看來,未來打樣是第二優先;讓事情起作用是*始終*優先,如果使用'enum',那麼通過一切手段來使用它。但是,我同意(正如我的回答所暗示的),您需要權衡您正在做的事情的未來影響以及長遠來看它是否值得。這就是爲什麼我不一定建議不這樣做,因爲實際上它會完成這項工作......而是在你做之前有一個想法。 – James