Tengo una aplicación ASP.NET MVC que utiliza Entity Framework para obtener datos.¿Cómo reutilizar las proyecciones en Entity Framework?
Necesito transformar Entites en Modelos antes de pasarlos a Ver. Las proyecciones pueden ser muy complejos, pero que sea sencillo:
public static IQueryable<UserModel> ToModel(this IQueryable<User> users)
{
return from user in users
select new UserModel
{
Name = user.Name,
Email = user.Email,
};
}
Esto puede ser usado en un controlador de la siguiente manera:
return View(Repository.Users.ToModel().ToList());
muy buena. Pero, ¿y si quiero usar esta proyección dentro de otra? Ejemplo:
public static IQueryable<BlogPostModel> ToModel(this IQueryable<BlogPost> blogs)
{
return from blogs in blogs
select new BlogPostModel
{
Title = blog.Title,
Authors = blog.Authors.AsQueryable().ToModel(), // (entities are POCOs)
// This does not work, because EF does not understand method ToModel().
};
}
(supongamos que el blog puede tener más de un autor y es de tipo Usuario).
¿Puedo de alguna manera separar las proyecciones y reutilizarlas dentro de otras?
Ver http: // stackoverflow.com/a/11679134/861716. –