Domanda

Mi piace come pulito un oggetto viene memorizzato in RavenDB, ma hanno una questione pratica per la quale non sono sicuro della risposta migliore.

Diciamo che ho una richiesta di preventivo:

QuoteRequest.cs

int Id;
dateTime DateCreated;
List<Quotes> Quotes;

Quote.cs

int ProviderId;
int Price;
int ServiceDays;
int ServiceTypeId;

quando qualcuno colpisce una pagina, ho sputato fuori un elenco di citazioni da cui possono scegliere. Queste citazioni sono riferite solo a un'istanza della richiesta preventivo.

La mia domanda è, dal momento che un oggetto figlio, come ad esempio una citazione nella lista, pretende molto avere un ID generato dal database, come faccio a generare un querystring per lasciare che il prossimo sapere pagine che cita l'utente vuole comprare?

Ci potrebbe essere più citazioni da uno ProviderId.

I miei pensieri erano né aggiungere un QuoteId ed incrementarlo in base a this.Quotes.Count, ma che sembra un po 'hacky, o generare un numero casuale, anche un po' hacky.

Come fanno le persone in generale di gestire una cosa del genere?

È stato utile?

Soluzione

Non si ha realmente bisogno di associare l'acquisto (ciò che l'utente ha scelto di acquistare) con la citazione originale? Sto indovinando che si prende il preventivo e quindi convertirlo in un acquisto. Se è così, allora non preoccuparsi di un ID a tutti. Basta passare lungo i valori costitutivi alla fase successiva. In altre parole, citando trattano come un valore in senso DDD.

Tuttavia, se si necessità di memorizzare un'associazione per l'acquisto ... beh, poi dipende da cosa si ha realmente necessità per tenere traccia. Ad esempio, è possibile solo aggiornare il preventivoRichiedi, segnando la citazione selezionato. (Aggiungi un IsSelected o qualcosa di simile alla classe citazione citazione.) Allora l'acquisto potrebbe essere collegata alla richiesta di citazione, e si potrebbe identificare la citazione in via delle bandiere.

Ancora una volta, tutto questo dipende dal contesto (e sto solo facendo congetture su questo).

Altri suggerimenti

Dal momento che nessuno ha ancora risposto a questo mi limiterò a dire come lo farei;

Perché aggiungere un ID a tutti? basta usare l'indice della lista? E la richiesta è "? Quote = 0" ottengono la citazione alla posizione 0?

Non realmente sicuro se non sto ottenendo qualcosa qui però ...

Una possibilità è quella di avere il negozio oggetto padre l'ultimo ID utilizzato. Quando si aggiunge un nuovo oggetto secondario si incrementa l'id-counter e aggiunge che per il bambino. Quando l'oggetto viene salvato l'id-contatore viene incrementato automaticamente.

Diciamo che avere post sul blog con i commenti:

public class Post
{
  public int NextCommentId;
  public List<Comment> Comments;
  ...
}

...

var comment = new Comment { Id = post.NextCommentId++ };
post.Comments.Add(comment);

session.SaveChanges();

Il codice di cui sopra potrebbe non essere corretta al 100%, ma dovrebbe darvi un'idea di come farlo, almeno!

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