2009-07-24 829 views
6

estoy jugando con repositorio sencilla subsónico de 3 y estoy golpeando las paredes en la comprensión de cómo hacer frente a las claves externas ...subsónico 3 - SimpleRepository

Si tengo un objeto de producto que contiene

int ID; 

string name; 

string description; 

Category category; 

int categoryID (this one is just to persist the product's categoryID to the DB) 

and a category object containing 

int ID; 

string name; 

Cómo ¿Puedo usar el repositorio para traer una lista de todos los productos con su objeto de categoría instanciado?

Por el momento he escrito una consulta linq que se une a product.categoryID = category.ID que está muy bien, pero cuando hago .ToList() los resultados de esta consulta, no se crea una instancia de la Categoría del producto .

¿Hay alguna manera de hacerlo, o tengo que crear manualmente la instancia de la categoría para cada producto?

Gracias,

Paul

Respuesta

6

que necesita para obtener LINQ para poblarlo,
usando algo como
consulta var = del producto en el repositorio.Todos (Producto)
join categoryItem in repo.Toda (Categoría)
en product.CategoryId eq UALs categoryItem.Id
seleccionar nueva {
ID = product.ID,
name = product.name,
Descripción = PRODUCT.DESCRIPTION,
categoryId = product.CategoryId
categoría = categoryItem
};

+0

Esto suena como la respuesta ... voy a intentarlo esta noche, y luego te dejo saber Cheers man – Paul

+0

Hola Podge, gracias por tu ayuda. Para volver a convertir esto en una lista de productos, tendré que pasar manualmente por la lista y crear una instancia de un nuevo objeto de producto para cada resultado (que actualmente es de tipo [tipo anónimo]) – Paul

+0

No hay una forma sencilla que yo sepa, excepto para asignarlo manualmente como dices. El tipo anónimo se lee solo en C#. La otra opción es cargar la Categoría por separado e iterar a través de los productos. Puede almacenar en caché la tabla Categoría y solo está presionando la base de datos una vez. Disculpe, no es la respuesta que desea. – Podge

Cuestiones relacionadas