Pergunta

Eu desenvolvendo uma página em que os usuários poderão adicionar e modificar o conteúdo existente, não é um wiki por Sé, mas meio que, como as habilidades de edição.

Estou trabalhando com o EF4 e a nova abordagem do Código no CTP mais recente, então qual seria o melhor design de classe para isso?

Meu palpite atual é algo assim:

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 então use -o em minhas outras entidades, em um contexto, pode ser algo assim

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

Mas não estou realmente convencido por isso ... já que também vou ter tags, capacidade de excluir/não formar postagens, reversão, etc. Você sabe como projetar corretamente as aulas que me ajudam a versão corretamente?

Foi útil?

Solução

Objetivo para a simplicidade

A principal pergunta que você precisa fazer é Você vai mostrar todas as versões o tempo todo ou a versão mais recente na maioria das vezes e todas elas mediante solicitação? Semelhante a aqui. Na maioria das vezes, você vê apenas a versão mais recente.

Se isso for o mesmo com o nosso caso, eu não me importaria tanto com essas versões. Mas quando você deseja mostrar todos eles em uma classe de uma página, o design de mais ou menos depende da maneira como você gostaria de mostrá -lo. Isso vai mostrar mudanças e coisas assim.

Prefiro ter uma aula como:

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 eu exibia todos eles, eu apenas devolveria uma lista desses pedidos por LastChange. Adicionei a lista de tags, mas não adicionei nenhuma das outras propriedades relacionadas ao processo relacionadas ao estado de perguntas. Depende enormemente da sequência do processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top