Domanda

Ho la seguente classe:

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

Voglio escludere le proprietà Boo1 e Boo2 Proprietà ma non voglio decorare quelle proprietà con Attributo PetaPoco.Ignore.Voglio avere oggetti puri Poco.Posso eseguire il comando Ignore nel codice o devo creare una procedura di query / memorizzata e mappare manualmente tutti i campi?

Qualsiasi aiuto sarebbe molto apprezzato!

È stato utile?

Soluzione

Sembra che Petapoco non possa essere detto in qualsiasi altro modo che i campi / proprietà devono essere ignorati rispetto agli attributi.Puoi ignorare alcuni membri, o se non stai mappando la maggior parte di una classe, puoi specificare la mappatura della colonna esplicita per la classe e decorare quelle che vuoi mappati.Capisco la tua esitanza ad aggiungere cruft o specifico di Orm a un Poco "puro", ma sfortunatamente che le informazioni devono essere da qualche parte, e poiché Petapoco non utilizza i file di mappatura (o molto di una configurazione, davvero), la classe èdove va.

L'unica cosa che potresti fare è creare un DTO / DAO che sarà ciò che è mappato, quindi creare operatori impliciti o espliciti da convertire tra la classe di dominio e il suo DTO.La Dto, quindi, non può semplicemente non avere i campi che non vuoi includere.Ciò mantiene entrambe le classi Poco (a seconda dei tuoi sentimenti riguardanti i metodi dell'operatore), e aggiunge solo una fase relativamente semplice di lanciare il risultato della query alla tua classe di dominio.

Altri suggerimenti

Nel mio ramo qui: https://github.com/schotime/PetApoco

Puoi descrivere fluentemente i tuoi modelli come ho descritto qui: http://schotime.net/blog/index.php/2011/05/16/FFUENT-PAPOCO-EXTERNAL-Mappings/ e usa anche la mappatura basata sulla convenzione come qui: http://schotime.net/blog/index.php / 2012 / 02/13 / PETAPOCO-BASATO-BASE-BUFENT-MAPPING /

Questo è un ottimo posto per un tipo anonimo.

nel tuo metodo per salvare foo

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

È solo un po 'più di lavoro, anche se potrebbe essere una pita se le tue lezioni sono profondamente annidate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top