Pregunta

Tengo la siguiente clase:

public class Foo
{
    public int Id { get; set; }
    ...
    public Boo Boo1 { get; set; }
    public Boo Boo2 { get; set; }
}

Quiero excluir las propiedades Boo1 y Boo2, pero no quiero decorar esas propiedades con el atributo PetaPoco.Ignore.Quiero tener objetos pecosos puros.¿Puedo ejecutar el comando Ignore en el código o tengo que crear un procedimiento de consulta / almacenamiento y mapear manualmente todos los campos?

¡Cualquier ayuda sería muy apreciada!

¿Fue útil?

Solución

Parece que Petapoco no se puede decir de ninguna otra manera que los campos / propiedades sean ignorados que mediante el uso de atributos.Puede ignorar a algunos miembros, o si no está asignando la mayoría de una clase, puede especificar la asignación explícita de columnas para la clase y decorar los que desea asignar.Entiendo su vacunanza para agregar a un cruft específico de ORM a un POCO "puro", pero desafortunadamente esa información tiene que estar en alguna parte, y como Petapoco no usa archivos de mapeo (o gran parte de una configuración en absoluto), la clase esdonde va.

Lo único que podría hacer es crear una DTO / DAO que será lo que se asigna, luego cree operadores implícitos o explícitos para convertir entre la clase de dominio y su DTO.La ODT, entonces, simplemente no puede tener los campos que no desea incluir.Que mantiene ambas clases POCO (dependiendo de sus sentimientos con respecto a los métodos del operador), y simplemente agrega un paso relativamente simple de lanzar el resultado de la consulta a su clase de dominio.

Otros consejos

en mi rama aquí: https://github.com/schotime/petapoco

Puede describir con fluidez sus modelos como si hubiera descrito aquí: http://schotime.net/blog/index.php/2011/05/16/fluent-petapoco-external-mappings/ y también use el mapeo basado en la convención como aquí: http://schotime.net/blog/index.php / 2012/ 02/13 / Petapoco-Convención - Mapeo fluido-fluido /

Este es un gran lugar para un tipo anónimo.

en su método para guardar foo

public void InsertFoo(Foo f)
{
    var db = new Database("connection");           
    var petaPocoFooObj = new {f.Id}
    db.Insert("FooTable", "FooId", petaPocoFooObj);
}

Es solo un poco más de trabajo, aunque podría ser una pita si sus clases están profundamente anidadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top