Ho creato un semplice oggetto con getter e setter:inserire non creare ID?
public class MemberCanonical : IMemberCanonical
{
public ObjectId Id { get; set; }
public String username { get; set; }
public String email { get; set; }
public String status { get; set; }
public IEnumerable<string> roles { get; set; }
}
Ora voglio inserire un nuovo membro nel database con:
try
{
memberObj.username = username;
memberObj.email = email;
memberObj.status = "active";
// memberObj.Id = new ObjectId().ToString();
this.membershipcollection.Insert(memberObj, SafeMode.True);
return true;
}
catch(Exception ex)
{
return false;
}
mi aspetterei inserto per creare un _id unico (Id), ma non sta succedendo. All'inserimento quando visualizzo il campo _id viene visualizzato "0000000 ...."
Cosa devo fare per consentire a Mongo di generare il proprio _id su insert?
A volte mi piace rispondere a domande in argomenti di cui non so nulla. Ecco cosa ho scoperto: Puoi generare ids tu stesso usando 'ObjectId.GenerateNewId()' - Puoi farlo nel costruttore di 'MemberCanonical', o controllare l'Id durante l'inserimento contro' ObjectId.Empty'. Successivamente, è * possibile * dovrebbe essere chiamato '_id', non ne sono del tutto sicuro. Cercherò anche di usare 'ObjectId? 'E impostare il suo valore su' null', ma questa è una supposizione selvaggia. – Kobi
Crea automaticamente l'Id quando Id type è ObjectId. che è come previsto. Se Id non è il driver ObjectId non saprà come creare quell'Id e renderlo univoco. Questo deve essere fatto manualmente. –
Qualcuno ha una soluzione che non richiede di inquinare il modello di dominio con problemi di persistenza come una dipendenza dai tipi MongoDB? – Kurt