我有名爲Events和Log的表。事件表由ID,事件描述和類型組成。並且,日誌包含LogID,EventID(引用Event表中的ID)和timstamp。從實體創建枚舉
我正在使用實體框架。在日誌表中輸入條目時,我提到了事件ID,作爲Event表中與日誌事件對應的編號。當我繼續在應用程序中使用此日誌記錄時,記住記錄事件的事件ID變得很麻煩。我想將這些事件ID映射爲我的代碼中的枚舉,並使用枚舉以獲得更好的可用性。
有沒有人使用這種方法創建枚舉?如果是這樣,請分享您對創建設計的想法。
我有名爲Events和Log的表。事件表由ID,事件描述和類型組成。並且,日誌包含LogID,EventID(引用Event表中的ID)和timstamp。從實體創建枚舉
我正在使用實體框架。在日誌表中輸入條目時,我提到了事件ID,作爲Event表中與日誌事件對應的編號。當我繼續在應用程序中使用此日誌記錄時,記住記錄事件的事件ID變得很麻煩。我想將這些事件ID映射爲我的代碼中的枚舉,並使用枚舉以獲得更好的可用性。
有沒有人使用這種方法創建枚舉?如果是這樣,請分享您對創建設計的想法。
這是可能的,但你必須手動定義enum
。
這是否是好設計取決於您定義的不同事件的數量以及時間。是否可以創建新的事件定義而不必更改代碼?在這種情況下,enum
可能是一個壞主意。如果事件ID列表是靜態的並且不是太大,那麼enum
將是可接受的,並且(在我看來)甚至是可以鼓勵的。
編輯:我的歉意,我提供的解決方案實際上是它在LINQ to SQL,而不是Entity Framework 1.0中完成的方式。一定是缺乏咖啡。在EF中完成的方式是在分部類中定義一個正確類型的屬性。
例如,我在我的數據庫中有一個EventType列,我想要映射到一個enum
。我已經從默認EventType
更名爲財產到EventTypeInt
,你可以看到如下:
然後你此列設置吸氣和二傳手屬性私人(在您可能用於重命名EventType的屬性管理器窗口中)。一旦完成並保存,請使用以下代碼:
public enum EventType
{
Unknown = 0,
Concert = 1,
Festival = 2
}
public partial class EventCalendar
{
public EventType EventType
{
get { return (EventType)EventTypeInt; }
set { EventTypeInt = (int)value; }
}
}
是的,它很單調乏味。在LINQ to SQL模型中它更實用。
而不是創建ENUMS你有沒有考慮將它們表示爲實體集中的導航屬性?
你能爲此拋出更多的光芒嗎?一個例子或參考將是偉大的! – pencilslate 2009-08-07 14:57:49
在你的初始描述中你說過:「事件表包含ID,事件描述和類型,並且日誌包含LogID,EventID(引用事件表中的ID)和timstamp。」我認爲這意味着EventID列與事件表中的ID之間有外鍵關係。如果是這種情況,如果您從數據庫中生成EDMX文件,EF1將根據此關係創建導航屬性。這些導航屬性將允許您執行查找,就像使用數據庫一樣。例如:logInstance.Event.ID會給你相應的事件ID。 – 2009-08-07 17:16:52