none
Adicionar propriedades em classe parcial entidade metadado. RRS feed

  • Pergunta

  • Pessoal, bom dia!

    É possível eu adicionar uma propriedade dentro de uma classe Metadado e, essa propriedade ser reconhecida, mesmo não estando no conexto do EntityFramework?

    Sei que uma forma de contornar essa situação é fazer uma nova classe tipo objeto DTO (Data Transfer Objects) com os mesmos dados e as propriedades adicionais. Mas teriam mais classes e mais métodos para passar os dados de uma classe de contexto a outra classe DTO.

    Por exemplo, meu contexto tem uma entidade Categoria, conforme abaixo:
    using System.ComponentModel.DataAnnotations;
    namespace MvcWebApp.Models
    {
        [MetadataType(typeof(CidadeMetadado))]
        public partial class Categoria
        {
        }
        public class CategoriaMetadado
        {
            [Required(ErrorMessage = "Obrigatório informar a Categoria")]
            [StringLength(100, ErrorMessage = "A categoria deve possuir no máximo 100 caracteres")]
            public string Nome { get; set; }
    
            //Essa propriedade não está no contexto e não é reconhecida.
            [Required(ErrorMessage = "Obrigatório informar a Categoria")]
            [StringLength(100, ErrorMessage = "A categoria deve possuir no máximo 100 caracteres")]
            public string TipoCaegoria { get; set; }
        }
    }
    Como vocês estão lidando com esse tipo de situação que, pelo que percebo é uma situação corriqueira para nós desenvolvedores?

    Glauco

    segunda-feira, 9 de maio de 2016 14:01

Todas as Respostas

  • O seu questionamento está faltando informações pertinentes!

    Você poderia exemplificar o que você deseja fazer, na integra (com os fontes de exemplo) e assim podemos ajudar a sua solução. Só lembrando que esse Metadata tem uma função exclusiva e diferenciado em relação ao ORM entity framework (qualquer ORM na verdade)

    Então nos passes exatamente o que deseja fazer, talvez existem meios muito mais simples de solução, de cara lendo seu questionamento é "NÃO" a resposta! O reconhecimento de um item na sua classe deve coexistir na mesma! o que fazemos é adicionar items que eu digo para que o Entity não o utilize! isso é bem normal!

    Exemplo:

    namespace WebApplication1.Models
    {
        [Table("tbPessoas")]
        public class Pessoas
        {
            [Key()]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int Id { get; set; }
    
            [Required()]
            [MaxLength(20)]
            public string FirstName { get; set; }
    
            [Required()]
            [MaxLength(40)]
            public string LastName { get; set; }
    
            [NotMapped()]
            public string FullName
            {
                get
                {
                    return string.Format("{0} {1}", FirstName, LastName);
                }
            }
        }
    }

    Nesse caso eu estou dizendo ao Entity que FullName não é mapeado!!!

    Mas vamos deixar você reformular?


    Fulvio C

    quarta-feira, 11 de maio de 2016 15:41