Pregunta

Vamos a decir que tengo dos tablas (Address y Phone) en SQL que tienen de uno a uno la relación. He creado linq correspondiente a las clases de SQL y cambiado la asociación a OneToOne

Quiero recuperar tanto los objetos mediante el filtrado de objeto secundario. por ejemplo tengo la siguiente consulta, que funciona bien:

var n = db.Addresses.Where(t => t.Phone.Number == 100);

¿Hay alguna manera de poder realizar los siguientes trabajos:

var n = db.Addresses.Where(t => t.Phone == new Phone(100));

El constructor de la clase anterior Phone inicializa la propiedad Number. Como puedo ver la consulta que se emitió contiene una cláusula que filtra la tabla Móviles por id (clave primaria), pero la cláusula número en no incluido.

Si fijo Number como clave principal en Visual Studio continuación se incluye en la cláusula where pero la búsqueda todavía no devuelve nada como el valor de parámetro para la identificación es 0. Incluso si funcionaba no es una solución que debe Number no puede ser una clave principal.

¿Fue útil?

Solución

Lo que estamos pidiendo no acaba de tener sentido. Si desea que el elemento de teléfono dado la dirección, usted tiene esto accediendo a la propiedad Address.Phone.

No se puede inicializar un tipo y usarlo para proyectar sobre como esto es DLINQ, donde la consulta se traslada hacia abajo a la base de datos. Usted puede hacer esto en LINQ a objetos, pero sería obligar a enumerar su lista, que se vendería toda la información de base de datos en la memoria, que puede no ser bueno para el rendimiento ...

No veo el problema aquí? Que tiene la dirección, una búsqueda que trabajan para ella, y se puede acceder a la propiedad de teléfono mediante el acceso a la propiedad de direcciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top