Frage

Ich habe Tabellen mit dem Namen Events und Log. Die Ereignistabelle besteht aus ID, Ereignisbeschreibung und Typ. Und das Log enthält LogID, EreignisID (bezieht sich auf ID von Ereignistabelle) und timstamp.

Ich bin mit Entities Framework. Während ein Eintrag in der Log-Tabelle zu machen, ich erwähne die Ereignis-ID als die Nummer in das Protokoll Ereignis aus der Ereignistabelle entspricht. Wie ich weiterhin diese Protokollierung über die App verwenden, wird es lästig, die Ereignis-ID für das protokollierte Ereignis zu erinnern. Ich mag diese Ereignis-ID als Aufzählungen in meinem Code zu erfassen und nur die Enum für eine bessere Bedienbarkeit verwenden.

Hat jemand erstellt Aufzählungen mit diesem Ansatz? Wenn ja, geben Sie bitte Ihre Gedanken über das Design teilen sich ein für die Erstellung.

War es hilfreich?

Lösung

Es ist möglich, aber Sie werden die enum manuell definieren.

Ob dies ein gutes Design ist abhängig von der Menge der verschiedenen Ereignisse, die Sie definieren, und wann. Ist es möglich, neue Event-Definitionen erstellen und müssen nicht den Code ändern? In diesem Fall wäre ein enum wahrscheinlich eine schlechte Idee sein. Wenn die Liste des Ereignis-IDs statisch ist und nicht zu groß, dann wäre ein enum akzeptabel sein, und (meiner Meinung nach) auch encourageable.

Edit: meine Entschuldigung, ich die Lösung vorgesehen war eigentlich so, wie es in LINQ to SQL, nicht Entity Framework 1.0 fertig ist. Muss ein Mangel an Kaffee gewesen. Die Art und Weise es in EF getan, ist eine richtig getippt Eigenschaft in einer Teilklasse zu definieren.

Zum Beispiel, ich habe eine Spalte Eventtype in meiner Datenbank, die ich auf eine enum zuordnen möchten. Ich habe die Eigenschaft umbenannt von dem Standard EventType EventTypeInt, wie Sie unten sehen können:


(Quelle: subbot.net )

Dann setzen Sie die Getter und Setter Eigenschaften für diese Spalte auf privat (im Immobilienmanager-Fenster, das Sie wahrscheinlich verwendet Eventtype umbenennen ). Sobald das erledigt ist und gespeichert, verwenden Sie den folgenden Code ein:

public enum EventType
{
    Unknown = 0,
    Concert = 1,
    Festival = 2
}

public partial class EventCalendar
{
    public EventType EventType
    {
        get { return (EventType)EventTypeInt; }
        set { EventTypeInt = (int)value; }
    }
}

Ja, es ist langweilig. Es war viel praktischer in LINQ to SQL-Modellen.

Andere Tipps

Anstatt die Schaffung ENUMS haben Sie sah in ihnen als Navigationseigenschaften in Ihrem Entitätsmengen darstellen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top