2014-10-01 50 views
0

我只想找出如何使用模型優先設計在實體中創建列作爲枚舉類型。從模型創建枚舉值使用EF 6.1的首次設計

在附圖中,您可以看到我創建了一個簡單的控制檯應用程序(在右窗格中)並添加了一個名爲Teacher的實體(位於左側)的EDM模型。

我點擊了EDM設計器並選擇了「Add new Enum Type」(你在中間窗格中看到)。這3種類型是Permanent,Contract和Guest,其中TeacherType枚舉類型的值分別爲1,2,3。

我怎麼能轉換TeacherType **在左窗格中的屬性實際上在中間窗格中的枚舉值TeacherType?** enter image description here

另外,如果你更新你的模型,它在轉會更新數據庫,你會失去你的改變?模型首先,我不相信,但用DataBase首先,我相信你會的。是否還有一種方法可以與DataBase First做同樣的事情?

代碼首先是好的,但我覺得它還有一段路要走,因爲你需要手動執行所有的Powershell命令,並且所有的「額外行李」都像代碼中的定義關係,FK的,種子等等。這需要很多時間我覺得可以很容易地在設計師更快,更少的錯誤。

回答

1

可以右鍵單擊該屬性,然後選擇「轉換爲枚舉」將創建一個新枚舉或右鍵單擊該屬性並選擇「屬性」,然後在屬性窗口中的「類型」行中選擇您的枚舉類型。請注意,如果該屬性已經是可以作爲枚舉基礎類型的類型(例如,byte,short,int或long - note EDM類型的系統不支持無符號類型),則僅顯示「Convert to Enum」菜單選項。 。如果您的屬性恰好是不同類型的(新創建的屬性的默認類型是字符串),則不會看到「轉換爲枚舉」菜單選項(因爲字符串對於枚舉類型不是有效的基礎類型)。要在菜單中看到這個選項,你必須首先找到這些屬性,並將其類型改爲基礎枚舉類型之一。

關於Code First用法 - EF Designer現在支持從數據庫創建Code First模型,因此您不必再爲現有數據庫手動配置關係。

+0

非常感謝!這回答了我的問題,並得到它... – sagesky36 2014-10-01 16:50:54

+0

Pawel,我正在從數據庫中抽取Code First模型---非常酷。我從數據庫中添加了兩個表格到應用程序中。它使用DbSet實體以及屬性和關聯創建了一個Model文件。它還爲每個表創建單獨的POCO類。問題是:如果我需要添加/更新/刪除屬性,該怎麼辦?我知道我可以更改POCO類來添加/更新/刪除屬性,並在Model類中反映相同的更改。我如何將代碼中所做的更改反映到數據庫中? – sagesky36 2014-10-03 18:31:17

+0

您需要決定是要先執行代碼還是首先執行數據庫(使用代碼優先模型)。如果您有一個現有的測試數據庫,並且您不關心數據,則可以從現有數據庫創建Code First模型,然後擺脫Db並繼續通過代碼演變數據庫(理想情況下使用遷移)。如果你不能這樣做,你應該在每次需要時發展數據庫並重新創建模型。 – Pawel 2014-10-03 18:41:23