Domanda

Ho un sviluppo di una pagina in cui gli utenti saranno in grado di aggiungere e modificare i contenuti esistenti, non è un wiki per sé, ma una sorta di, come la capacità di editing di SO.

sto lavorando con EF4 e il nuovo approccio codice Prima nell'ultima CTP, così che cosa sarebbe il miglior design di classe per questo?

La mia ipotesi attuale è qualcosa di simile:

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

   public virtual User User{ get; set; }  
}

e quindi utilizzare nei miei altre entità, in un contesto in modo che possa essere qualcosa di simile

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

Ma io non sono veramente convinto da esso .. da quando ho anche intenzione di avere i tag, la capacità di cancellare / messaggi undelete, rollback, ecc Sai come progettare correttamente le classi che la versione aiuto me il contenuto correttamente?

È stato utile?

Soluzione

Aim per semplicità

La questione principale che è necessario porsi è Avete intenzione di mostrare tutte le versioni tutto il tempo o la versione più recente la maggior parte del tempo e tutti loro su richiesta? Simile a qui. Il più delle volte si vede solo la versione più recente.

Se questo è lo stesso con il nostro caso vorrei si preoccupa tanto di queste versioni. Ma quando ci si vuole mostrare loro tutto su un design di classe pagina più o meno dipende dal modo in cui si desidera mostrare. E 'intenzione di essere delle variazioni e cose del genere.

Preferisco avere una classe come:

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; }
}

E quando mi piacerebbe visualizzare tutti li avevo appena restituire un elenco di questi ordinato da LastChange. Ho aggiunto elenco tag, ma non ho aggiunto una qualsiasi delle altre proprietà relativi al processo relativi allo stato domanda. Dipende enormemente sulla sequenza di processo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top