none
DataAnnotations / MVC 3 / EF - CodeFirst RRS feed

  • Pergunta

  • Prezados,

    Usando as seguintes tecnologias: 

    - Validação (DataAnnotations) / MVC-3 (Razor) / EF-CodeFirst

    Como atribuir validação sem reescrever a entidade?

    Consigo fazê-lo usando o MODELO.DESIGNER.CS que é gerado pelo arquivo MODELO.EDMX, adicionando referências ao pacote pertinente à classe, mas, qualquer arrasto, inclusão de entidade, etc., faz com que eu perca os atributos adicionados (METADATATYPE(typeof()) , [Required()] ... 

    Sugestões?

    Desde já agradecido.

    quarta-feira, 24 de outubro de 2012 18:24

Respostas

  • Eu aconselharia a usar o code first, você tem um controle muito melhor.

    Caso contrario você pode criar uma partial class para cada entidade contendo os data annotations.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 24 de outubro de 2012 18:42
  • Prezados,

    Para MODELFIRST deve ser feito desta forma:

     namespace Fake
    {
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.ComponentModel;
        using System.ComponentModel.DataAnnotations;

        [MetadataType(typeof(TipoUsuarioMetaData))]
        public partial class TipoUsuario
        {
        }

        public class TipoUsuarioMetaData
        {
            [Key]
            public Int32 Id { get; set; }

            [StringLength(25,MinimumLength = 5, ErrorMessage = "Comprimento entre 5 e 25 caracteres.")]
            [Required(ErrorMessage = "Nome" + Util.FieldORequired)]
            public String Nome { get; set; }


        }
    }

    Obrigado a todos!

    Abçs

    quinta-feira, 25 de outubro de 2012 19:17

Todas as Respostas

  • Eu aconselharia a usar o code first, você tem um controle muito melhor.

    Caso contrario você pode criar uma partial class para cada entidade contendo os data annotations.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 24 de outubro de 2012 18:42
  • Obrigado Murilo!

    Utilizei CODEFIRST, com relação às PARTIAL CLASS como adicionar os atributos para cada propriedade?


    quarta-feira, 24 de outubro de 2012 19:09
  • Acho que você está utilizando database first e não code first heheh.

    Sobre as partial, você teria que criar uma outra classe com todos os dados e depois remover as propriedades da classe principal(gerada pelo edmx).. pensando melhor, acho que daria muito trabalho ainda.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 24 de outubro de 2012 19:12
  • Murilo, mais uma vez obrigado!

    Estou usando CODEFIRST, certamente.

    Não quero mexer com propriedades de classe, exceto para acrescentar os atributos desejados. pois para mim o EDMX perderia um pouco do sentido.

    Remover / Mover as classes do *.designer.cs... Não sei qual seria o impacto sobre o projeto.

    Obrigado!

    quarta-feira, 24 de outubro de 2012 19:30
  • Dá uma lida nesse artigo: http://thedatafarm.com/blog/data-access/model-first-database-first-or-code-first-ndash-update-to-data-points-column/

    Acho que você está confundindo database first com code first hehehe.

    Code first não é gerado com o edmx.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 24 de outubro de 2012 22:54
  • Olá Alexandre,

    Tudo beleza? :)

    Uma das principais características do Code First é não exigir a existência de um EDMX. Se seu projeto tem um EDMX então é bastante provável que não esteja utilizando o EDMX.

    Vc chegou a fazer o download do Code First?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 24 de outubro de 2012 23:04
  • Prezados, 

    Obrigado mais uma vez!

    Murilo, show de bola, vou corrigir, MODEL FIRST através do Visual Designer, não existindo a DATABASE; exatamente a aplicação que tenho.

    A imagem, do link enviado, ilustra:

    O arquivo MODELO.DESIGNER.CS é gerado sempre que se faz uma alteração do LAYOUT; tentei resolve usando templates T4, só que modificações no LAYOUT repercutem também nos templates gerados, a não ser que se faça a tramóia de deixá-los abertos e não permitir serem sobreescritos com as modificações oriundas deste mesmo LAYOUT.

    Acho que vou ter que ficar enganando o VStudio por um tempinho //;c}

    Ou alguma orientação para gerar as críticas propostas pelo DATAANNOTATIONS neste modelo de desenvolvimento, que convenhamos é show de bola!

    Vlws!


    quinta-feira, 25 de outubro de 2012 01:13
  • Prezados,

    Para MODELFIRST deve ser feito desta forma:

     namespace Fake
    {
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.ComponentModel;
        using System.ComponentModel.DataAnnotations;

        [MetadataType(typeof(TipoUsuarioMetaData))]
        public partial class TipoUsuario
        {
        }

        public class TipoUsuarioMetaData
        {
            [Key]
            public Int32 Id { get; set; }

            [StringLength(25,MinimumLength = 5, ErrorMessage = "Comprimento entre 5 e 25 caracteres.")]
            [Required(ErrorMessage = "Nome" + Util.FieldORequired)]
            public String Nome { get; set; }


        }
    }

    Obrigado a todos!

    Abçs

    quinta-feira, 25 de outubro de 2012 19:17