Se ho bisogno di recuperare un oggetto da un modello personalizzato legante deve il legante interagire con il livello di servizio, lo strato repository, o ...?

StackOverflow https://stackoverflow.com/questions/1119928

Domanda

Se ho una classe simile a questo:

public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public Pet myPet { get; set; }
}

Quando creo un modello personalizzato legante, il Post dalla mia forma non sarà l'invio di un animale domestico, avrebbe inviato nei dati come questo: firstName: "myFirstName" cognome: "myLastName" myPet: "myPetsName"

Dal momento che il nome del Pet viene passato, e non l'oggetto vero e proprio animale domestico, l'oggetto Pet ha bisogno di essere recuperato dal all'interno del modello legante.

La mia domanda è, se il modello di legante interagirà con il livello di servizio, lo strato repository, o dovrebbe essere anche il recupero della Pet? Il problema con il livello di servizio è che non mi sembra di avere accesso a ModelState durante l'inizializzazione del servizio: ((this.ModelState) mi dà un errore)

_petService = new PetService(new ModelStateWrapper(this.ModelState));

Se ho bisogno del modello legante per creare un oggetto persona, allora la Pet avrebbe bisogno di essere assegnati in qualche modo ... come faccio a fare questo?

È stato utile?

Soluzione

Quello che faccio è utilizzare un modello di vista / presentazione, invece di legare oggetti di business. Ricordate che i vostri utenti potrebbero inserire i valori non validi, e sarà necessario ri-visualizzare questi valori non validi per l'utente quando si chiede loro di correggere i loro errori. Ma la tua azienda "reale" oggetti probabilmente non accetterà valori non validi. Quindi il modello di vista deve consentire qualsiasi input dell'utente, anche in ingresso gli oggetti di business non accetteranno.

Questo rende il facile vincolante. Non è necessario colpire un repository di legare, solo quando l'aggiornamento l'oggetto business con (valido) l'input dell'utente.

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