Ho due classe come questa:salvare un oggetto con un rapporto bidirezionale in MongoDB usando ufficiale C# conducente
public Class Company
{
public IList<Employee> Employees;
}
public Class Employee
{
public Company WorkPlace;
}
quando voglio salvare un oggetto della classe Società:
MongoDatabase Database = MongoServer.GetDatabase("db");
var workPlace = new Company();
var employee = new Employee { WorkPalce = workPlace}
workPlace.Employees = new List<Employee>{ employee };
Database.GetCollection<Company>("company").Save(workPlace);
StackOverflow Eccezione sarà lanciato.
se cambio la classe dei dipendenti per fare riferimento alla società con un ID al posto di un riferimento a un oggetto, quindi quando ho un elenco di dipendenti e iterare l'elenco e voglio utilizzare la società di ciascun dipendente, per ognuno verrà generata una query. questo sarà lento, non essere? –
@OmidRH: Sì, in genere sarà relativamente lento. Esistono molte strategie per mitigare, ma dipende da cosa esattamente si vuole raggiungere. Ad esempio, se è necessario visualizzare il nome dell'azienda per ciascun dipendente, è possibile che si desideri copiare il nome dell'azienda per il dipendente. Visualizzazione di un elenco di dipendenti e dei loro nomi di società è facile allora, ma quando il nome della società cambia, dovrai aggiornare tutti i dipendenti. Questo è chiamato de-normalizzazione. In NoSql, le query necessarie per supportare modellano la struttura dei dati, non i dati che è necessario memorizzare. – mnemosyn