none
ventajas de Buddy Class? RRS feed

  • Pregunta

  • Hola.

    Siempre he trabajado con EF Code First y cuando me llega el momento de crear View Models pues simplemente creaba una clase con los atributos que me interesaban y utilizaba AutoMapper para enlazar la informacion del model view y de la clase, pero ahora me han pedido que cree Buddy Classes para un modelo EF Database First, ellos me explican y es algo que ya sabia que no debo tocar la clase creada por el modelo, pero me dicen que utilice Buddy classes, por eso les pido su ayuda en esto, supongamos esta es mi clase en el modelo

    public partial class Customer
    {
        public string Priority { get; set; }
    }

     y quiero crear una buddy class, debo crear una metadata y una clase parcial de mi clase original asi?

    [MetadataType(typeof(CustomerMetaData))]
    
    public partial class Customer
    {
    
    }
    
    internal class CustomerMetaData
    {
        [Required]
        public string Priority { get; set; }
    }

    mis dudas son:

    Segun entiendo al crear una metadata debo especificar todos y cada uno de los atributos de la clase original(la de mi modelo EF) entonces porque creo una metadata, porque no simplemente me creo la clase ViewModel con los atributos que necesito, le agrego DataAnnotations para las validaciones y luego utilizo AutoMapper?

    que ventajas me trae el utilizar Buddy Classes? yo le veo mas trabajo

    y por ultimo, como enlazo los valores que obtengo en my buddy class con los de mi clase original, o eso se logra al utilizar MetaData?  de ser asi debere utilizar todos los atributos de mi clase original(la del modelo) en la clase Buddy?

    soy nuevo en esto, si mis preguntas estan fuera de lugar les pido su orientación por favor


    pabletoreto



    • Editado pabletoreto viernes, 12 de junio de 2015 20:29
    viernes, 12 de junio de 2015 20:15

Respuestas

  • Yo siempre utilizo ViewModel.

    El utilizar directamente las clases de EF como modelo de vistas siempre me ha parecido que es mezclar la capa de presentación con la lógica de negocio. Aunque vayas a utilizar todas las propiedades de una clase EF en la vista nadie te garantiza que eso vaya a seguir siendo así en el futuro. Si más adelante añades una propiedad a la clase EF que no deseas utilizar en el modelo, o añadir propiedades al modelo que no se encuentran en la clase EF, siempre es mejor tenerlos ya diferenciados de antemano.

    Pero bueno, es opinión personal. Hay quien las utiliza e incluso lo recomienda siempre que sea posible.

    • Marcado como respuesta pabletoreto viernes, 12 de junio de 2015 21:22
    viernes, 12 de junio de 2015 21:20

Todas las respuestas

  • Vamos a ver la idea de crear clases Buddy es para cuando quieres utilizar las clases generadas por el EF como modelo de las vistas. Si vas a utilizar modelos de vista no tiene sentido.

    viernes, 12 de junio de 2015 21:10
  • Vamos a ver la idea de crear clases Buddy es para cuando quieres utilizar las clases generadas por el EF como modelo de las vistas. Si vas a utilizar modelos de vista no tiene sentido.

    Significa que si quiero utilizar Buddy Classes debo incluir todos los atributos de mi clase base? en caso de no necesitarlos todos lo mejor es utilizar ViewModel?

    pabletoreto

    viernes, 12 de junio de 2015 21:13
  • Yo siempre utilizo ViewModel.

    El utilizar directamente las clases de EF como modelo de vistas siempre me ha parecido que es mezclar la capa de presentación con la lógica de negocio. Aunque vayas a utilizar todas las propiedades de una clase EF en la vista nadie te garantiza que eso vaya a seguir siendo así en el futuro. Si más adelante añades una propiedad a la clase EF que no deseas utilizar en el modelo, o añadir propiedades al modelo que no se encuentran en la clase EF, siempre es mejor tenerlos ya diferenciados de antemano.

    Pero bueno, es opinión personal. Hay quien las utiliza e incluso lo recomienda siempre que sea posible.

    • Marcado como respuesta pabletoreto viernes, 12 de junio de 2015 21:22
    viernes, 12 de junio de 2015 21:20