tengo dos clase como esta:guardar un objeto con una relación bidireccional en mongodb usando oficial C# conductor
public Class Company
{
public IList<Employee> Employees;
}
public Class Employee
{
public Company WorkPlace;
}
cuando quiero guardar un objeto de empresa de clase:
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 Excepción será arrojado.
si cambio de la clase empleado para hacer referencia de nuevo a la compañía con un id en lugar de una referencia de objeto, de modo que cuando tengo una lista de Empleados e itero la lista y deseo usar la Empresa de cada Empleado, para cada uno se generará una consulta. esto será lento, ¿no? –
@OmidRH: Sí, normalmente será comparativamente lento. Hay muchas estrategias para mitigar, pero depende de lo que exactamente quiere lograr. Por ejemplo, si necesita mostrar el nombre de la compañía para cada empleado, puede copiar el nombre de la compañía al empleado. Mostrar una lista de empleados y sus nombres de compañías es fácil, pero cuando cambie el nombre de la empresa, deberá actualizar a todos los empleados. Esto se llama desnormalización. En NoSql, las consultas que necesita para dar soporte dan forma a la estructura de datos, no a los datos que necesita almacenar. – mnemosyn