Frage

ich eine Seite eine Entwicklung in dem Benutzer in der Lage, Hinzufügen und Ändern von bestehenden Inhalten, es ist nicht ein Wiki an sich, sondern eine Art, wie SO die Bearbeitung Fähigkeiten.

Ich arbeite mit EF4 und dem neuen Kodex-First-Ansatz in der neuesten CTP, so würde, was das beste Klasse-Design für das sein?

meine aktuelle Vermutung ist so etwas wie folgt aus:

public class VersionableText
{
   public int Id { get; set; }
   public DateTime Date{ get; set; }
   public String Text{ get; set; }

   public virtual User User{ get; set; }  
}

und es dann in meinen anderen Einheiten verwenden, in einem SO Zusammenhang könnte es so etwas wie diese

sein
public class Question
{
   public int Id {get; set;}
   public virtual VersionableText Title {get; set;}
   public virtual VersionableText Content{get; set;}
   ...
}

Aber ich bin nicht wirklich überzeugt es .. da ich auch Tags haben werde, die Fähigkeit, löschen / undelete Beiträge, Rollbacks usw. Wissen Sie, wie man richtig Klassen zu gestalten, dass mir helfen Version den Inhalt richtig?

War es hilfreich?

Lösung

Ziel der Einfachheit halber

Die wichtigste Frage, die Sie sich stellen müssen, ist Wollen Sie alle Versionen des ganze Zeit zeigen, oder die neueste Version der meisten Zeit und alle von ihnen auf Anfrage? ähnlich wie hier. Die meiste Zeit nur die neueste Version sehen.

Wenn dies das gleiche mit unserem Fall ist, würde ich nicht so viel über diese Versionen kümmern. Aber wenn Sie würden wollen, dass sie auf der einen Seite Klasse-Design alle zeigen mehr oder weniger abhängig von der Art und Weise, dass Sie es zeigen möchten. Wird es Änderungen und ähnliches zu zeigen.

Ich würde lieber eine Klasse wie:

public class Question
{
    public int Id { get; set; }
    public QuestionStatus Status { get; set; }
}

public class QuestionHistory
{
    public Question Question { get; set; }

    public string Title { get; set; }
    public string Content { get; set; }

    public User Author { get; set; }

    public DateTime Created { get; set; }

    public IList<Tag> Tags { get; set; }
}

Und wenn ich würde sie alle zeigen würde ich wieder nur eine Liste dieser von LastChange bestellt. Ich habe Tags Liste hinzugefügt, aber ich habe nicht zu Frage zustandsbezogenen keines der anderen prozessbezogenen Eigenschaften hinzufügen. Es hängt enorm auf den Prozessablauf.

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